微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们应该比较访问令牌和ID令牌中的“ sub”声明吗?

如何解决我们应该比较访问令牌和ID令牌中的“ sub”声明吗?

如果我们在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”声明匹配?还是它们都是单独的表示形式?

我们甚至在资源服务器上执行这样的验证,以确保它们都形成一对并针对同一用户会话发出吗?

解决方法

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

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

您的资源服务器为什么要与ID令牌交互? ID令牌用于 Authentication 用例,访问令牌用于 Authorization 用例,如此处所述:https://developer.okta.com/docs/guides/validate-access-tokens/go/overview/#access-tokens-vs-id-tokens。如果您希望使用OAuth令牌保护资源服务器,则将依赖于访问令牌。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。