我使用xpages创建了一个REST API,该数据库具有匿名“作者访问”。还有Azure上的OAuth设置。因此API消费者将使用OAuth Url,客户端ID,客户端密码并生成Azure OAuth令牌并调用公共Xpages API端点,如下所示。
例如,我获取承载访问令牌并使用Azure Discoverykeys URL验证Azure令牌。是否有其他方法可以使用Azure API网关或OAuth保护此API。请注意:这是服务器到服务器的认证,并且没有用户交互可用。
<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>
1条答案
按热度按时间mcvgt66p1#
Domino 12.0.2可以配置为接受JWT令牌。配置后,您的服务器需要从Azure获取JWT并将其作为Authorization Bearer头发送。这同样适用于Domino REST API。
服务提供者(SP)并不关心访问令牌是如何生成的,因此您可能不需要OAUTH舞蹈,只需Azure到混合JWT即可
只要确保数据库没有匿名访问,这样Domino就可以处理JWT检查。