如何使用 Azure OAuth 或 Azure API 网关保护 Open xpage REST API

问题描述 投票:0回答:1

我已经使用 xpages 创建了一个 REST API,并且该数据库具有匿名“作者访问权限”。 还有 Azure 上的 OAuth 设置。因此,API 使用者将使用 OAuth Url、客户端 ID、客户端密钥并生成 Azure OAuth 令牌并调用公共 Xpages API 端点,如下所示。

就像,我获取不记名访问令牌并使用 Azure Discoverykeys URL 验证天蓝色令牌。是否有其他方法可以使用 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>
azure oauth xpages lotus-notes
1个回答
4
投票

Domino 12.0.2 可以配置为接受 JWT 令牌。配置完成后,您的服务器需要从 Azure 获取 JWT 并将其作为授权承载标头发送。 这同样适用于 Domino REST API。

服务提供商 (SP) 不关心如何生成访问令牌,因此您可能不需要 OAUTH 舞蹈,只需要 Azure 来混合 JWT

只需确保数据库没有匿名访问权限,以便 Domino 处理 JWT 检查。

© www.soinside.com 2019 - 2024. All rights reserved.