OIDC 角色 SSO 概览

最近更新时间:2024-04-10 17:12:42

我的收藏
OIDC(OpenID Connect)是建立在 OAuth 2.0基础上的一个认证协议,腾讯云 CAM 支持基于 OIDC 的角色 SSO。

基本概念

概念
说明
OIDC
OIDC(OpenID Connect)是建立在 OAuth 2.0 基础上的一个认证协议。OAuth 是授权协议,而 OIDC 在 OAuth 协议上构建了一层身份层,除了 OAuth 提供的授权能力,它还允许客户端能够验证终端用户的身份,以及通过 OIDC 协议的 API(HTTP RESTful 形式)获取用户的基本信息。
OIDC 令牌(OIDC Token)
OIDC 可以给应用签发代表登录用户的身份令牌,即 OIDC 令牌(OIDC Token)。
OIDC令牌用于获取登录用户的基本信息。
临时身份凭证
STS(Security Token Service)是腾讯云提供的一种临时访问权限管理服务,通过 STS 获取可以自定义时效和访问权限的临时身份凭证(STS Token)。
颁发者 URL
颁发者 URL由外部 IdP 提供,对应 OIDC Token 的 iss 字段值。
颁发者 URL 必须以 https 开头,符合标准 URL 格式,但不允许带有 query 参数(以 ? 标识)、fragment 片段(以 # 标识)和登录信息(以 @ 标识)。
客户端 ID(Client ID)
您的应用在外部 IdP 注册的时候,会生成一个客户端 ID(Client ID)。
当您从外部 IdP 申请签发 OIDC 令牌时必须使用该客户端 ID,签发出来的 OIDC 令牌也会通过 aud 字段携带该客户端 ID。
在创建 OIDC 身份提供商时配置该客户端 ID,然后在使用 OIDC 令牌换取 STS Token 时,腾讯云会校验 OIDC 令牌中 aud 字段所携带的客户端 ID 与 OIDC 身份提供商中配置的客户端 ID 是否一致。只有一致时,才允许扮演角色。

应用场景

当企业应用需要频繁访问腾讯云时,如果使用固定的访问密钥(AccessKey),且安全防护措施不足时,可能会因 AccessKey 泄露而带来安全隐患。为了解决这个问题,有些企业会将应用注册在企业自建或者第三方的具有 OIDC 能力的身份提供商中(例如:Google G Suite 或 Okta 等),以借助 OIDC 身份提供商的能力来为应用生成 OIDC 令牌(OIDC Token)。在这种情况下,借助腾讯云 CAM 提供的角色 SSO 能力,企业应用可以通过持有的 OIDC 令牌换取腾讯云临时身份凭证(STS Token),从而安全地访问腾讯云资源。
此外,有些个人开发者或中小企业允许员工使用其在一些网站(例如:社交网站)上注册的身份来登录腾讯云,如果这些网站支持生成 OIDC 令牌,则可以使用腾讯云 CAM 来完成基于 OIDC 的单点登录。

基本流程

1. 在外部 IdP 中注册应用,获取应用的客户端 ID(Client ID)。
2. 在腾讯云 CAM 中创建 OIDC 身份提供商,配置腾讯云与外部 IdP 的信任关系。具体操作,请参见 创建 OIDC 身份提供商
3. 在腾讯云 CAM 中创建 OIDC 身份提供商的 CAM 角色,并为 CAM 角色授权。具体操作,请参见 创建 OIDC 身份提供商的 CAM 角色
4. 在外部 IdP 中签发 OIDC 令牌(OIDC Token)。
5. 使用 OIDC Token 换取 STS Token。具体操作,请参见 AssumeRoleWithWebIdentity
6. 使用 STS Token 访问腾讯云资源。

配置示例