【问题标题】:Verifying Access Tokens Generated from Multiple Client IDs with Okta使用 Okta 验证从多个客户端 ID 生成的访问令牌
【发布时间】:2023-01-26 08:01:37
【问题描述】:

我有两个使用相同后端的应用程序。两个前端应用程序使用不同的客户端 ID。验证两个前端应用程序的访问令牌的最佳方法是什么。以下是我所拥有的基本结构。

const OktaJwtVerifier = require('@okta/jwt-verifier');

const oktaJwtVerifier = new OktaJwtVerifier({
  issuer: process.env.OKTA_ISSUER,
  clientId: process.env.OKTA_CLIENT_ID

});

const oktaToken = await oktaJwtVerifier.verifyAccessToken(accessTokenString,[
    process.env.OKTA_CLIENT_ID,
]);

有没有办法发送issuerclientId的数组?目标是验证来自两个应用程序 APP X 和 APP Y 生成的访问令牌,即clientIdXclientIdY

【问题讨论】:

    标签: oauth-2.0 jwt okta bearer-token okta-api


    【解决方案1】:

    您不需要验证客户端 ID,因为它是用来获取令牌的。 Okta 的 GitHub 存储库 README.md 让您了解要验证访问令牌 (https://github.com/okta/okta-jwt-verifier-js#access-tokens) 的声明/条件,因此请检查。

    这是验证库中的一个片段,它表明您不需要客户端 ID 来进行访问令牌验证

      async verifyAccessToken(accessTokenString, expectedAudience) {
        // njwt verifies expiration and signature.
        // We require RS256 in the base verifier.
        // Remaining to verify:
        // - audience claim
        // - issuer claim
        // - any custom claims passed in
    
        const jwt = await this.verifyAsPromise(accessTokenString);
        verifyAudience(expectedAudience, jwt.claims.aud);
        verifyIssuer(this.issuer, jwt.claims.iss);
        verifyAssertedClaims(this, jwt.claims);
    
        return jwt;
      }
    

    通常,获取令牌的客户端 ID 是什么并不重要,重要的是令牌的内容:

    • 它是给谁的
    • 谁发的
    • 它的到期时间
    • 范围
    • 自定义声明

    如果您担心客户端 ID,可以通过为其访问策略/规则引入约束来在 authZ 服务器级别消除它。

    【讨论】:

    • 我知道不需要验证客户端 ID,但是,它们用于验证访问令牌。因此,使用客户端 ID X 生成的访问令牌需要使用客户端 ID Y 进行验证
    • 在进一步的测试中,我意识到客户端 ID 和发行者对于验证进入的令牌是必要的。
    • client_id 仅在 id_token 验证时需要,对于访问您不需要它。我编辑了我的回复以包含您正在使用的库中的 sn-p。不确定在哪里找到 client_id 作为必需参数
    【解决方案2】:

    我面临同样的问题。如果您能够修复它,请告诉我。

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2018-04-20
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多