Я создал REST API с помощью xpages, и эта база данных имеет анонимный «доступ для авторов». также Настройка OAuth в Azure. Таким образом, потребитель API будет использовать URL-адрес OAuth, идентификатор клиента, секрет клиента, создать токен Azure OAuth и вызвать общедоступную конечную точку API Xpages, как показано ниже.
Например, я получаю токен доступа к носителю и проверяю токен Azure с помощью URL-адреса Azure Discoverykeys. Есть ли другой способ защитить этот API с помощью шлюза API Azure или OAuth. Обратите внимание: это межсерверная аутентификация, и взаимодействие с пользователем недоступно.
<xe:restService pathInfo = "locationupload">
<xe:this.service>
<xe:customRestService>
<xe:this.doPost><![CDATA[#{javascript:try {
var azureDiscoveryKeys = "https://login.microsoftonline.com/tenentID/discovery/v2.0/keys";
var token = "Zdl09gMtY3KGHVyQ7UNmoWUJl3DAm7XG9af3zU8Bgb-1gwjfaAvgeobTA";
var provider = new UrlJwkProvider(new URL(azureDiscoveryKeys));
var jwt = JWT.decode(token);
var jwk = provider.get(jwt.getKeyId());
var publicKey = (RSAPublicKey) jwk.getPublicKey();
var alg = Algorithm.RSA256(publicKey, null);
var verifier = JWT.require(alg).build();
verifier.verify(token);
System.out.println("Token is Valid");
}catch(JWTVerificationException ex) {
System.out.println(ex.getMessage());
} catch(JwkException ex) {
System.out.println(ex.getMessage());
} catch(MalformedURLException ex) {
System.out.println(ex.getMessage());
} catch(Exception e) {
e.printStackTrace();
}}]]></xe:this.doPost>
</xe:customRestService>
</xe:this.service>
</xe:restService>
Domino 12.0.2 можно настроить для приема токена JWT. После настройки ваш сервер должен получить JWT из Azure и отправить его как заголовок носителя авторизации. То же самое относится и к Domino REST API.
Поставщику услуг (SP) все равно, как генерируется токен доступа, поэтому вам, вероятно, не нужен танец OAUTH, просто Azure для микширования JWT.
Просто убедитесь, что база данных не имеет анонимного доступа, поэтому Domino обрабатывает проверку JWT.
Я бы больше не стал этого делать, так как JWT теперь поддерживается в Domino.
Спасибо за ответ Стефан Х. Виссел. Я только что нашел документацию, чтобы использовать ваше предложение с вашего сайта. wissel.net/blog/2016/02/…