【问题标题】:Should we compare 'sub' claim in Access Token and ID Token?我们应该比较 Access Token 和 ID Token 中的“sub”声明吗?
【发布时间】:2021-01-28 02:31:41
【问题描述】:

如果我们在 OIDC 流程中获得如下 Id 令牌和访问令牌:

Id 令牌:

{
 "iss": "https://server.example.com",
 "sub": "24400320",
 "aud": "s6BhdRkqt3",
 "nonce": "n-0S6_WzA2Mj",
 "exp": 1311281970,
 "iat": 1311280970,
 "auth_time": 1311280969,
 "acr": "urn:mace:incommon:iap:silver"
 "amr": ["mfa", "pwd","otp"]
}

访问令牌:

{
    "iss": "https://cas.nhs.uk",
    "sub": "https://fhir.nhs.uk/Id/sds-role-profile-id"|[SDSRoleProfileID]",
    "aud": "https://provider.thirdparty.nhs.uk/GP0001/STU3/1",
    "exp": 1469436987,
    "iat": 1469436687,
    "reason_for_request": "directcare",
    "requested_scope": "patient/*.read",
    "requesting_system": "https://fhir.nhs.uk/Id/accredited-system|[ASID]",
    "requesting_organization": "https://fhir.nhs.uk/Id/ods-organization-code|[ODSCode]",
    "requesting_user": "https://fhir.nhs.uk/Id/sds-role-profile-id"|[SDSRoleProfileID]"
}

Id 令牌中的“sub”声明应与 Access 令牌中的“sub”声明匹配是否有效?还是它们都是独立的表示?

我们是否甚至在资源服务器上执行此类验证以确保它们形成一对并针对同一个用户会话发出?

【问题讨论】:

    标签: openid-connect access-token ping okta isam


    【解决方案1】:

    根据 Okta 的文档,the 'sub' claim in the access token 默认情况下是 Okta 中的用户 ID(如果使用具有可用用户范围的 OAuth 流,如授权代码流)或应用程序的客户端 ID(如果使用客户端凭据流)在奥克塔。但是,如果您使用的是自定义授权服务器,the value for 'sub' can be configured

    同样,the 'sub' claim in the ID token 将是 Okta 中的用户 ID。与访问令牌不同,此值不能修改,因为OIDC standard 要求此值在颁发者内是本地唯一的。

    为什么您的资源服务器会与 ID 令牌交互? ID 令牌用于身份验证 用例,而访问令牌用于授权 用例,如下所述:https://developer.okta.com/docs/guides/validate-access-tokens/go/overview/#access-tokens-vs-id-tokens。如果您希望使用 OAuth 令牌保护资源服务器,则需要依赖访问令牌。

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 2014-04-20
      • 1970-01-01
      • 2019-03-23
      • 2016-03-18
      • 1970-01-01
      • 2020-05-26
      • 2021-08-21
      • 2021-10-12
      相关资源
      最近更新 更多