我们可以在 OIDC 中请求 OAuth 2 范围吗?
Can we request OAuth 2 scopes in OIDC?
我知道 OIDC 用于联合身份验证,在 /authorize 端点中我们可以传递 standard/custom 范围,例如 openid 配置文件名称电子邮件 等。并且基于我们在 ID 令牌中添加声明,并且还会为这些范围颁发访问令牌,客户端可以使用访问令牌调用 /userinfo 端点。作为回应,我们 return 基于 OIDC 范围的用户信息。
类似地,在 OAuth2.0 的情况下,客户端可以请求 OAuth 范围(基于资源服务器上支持的范围),例如 create-api read-api delete-api等;并在用户同意后,使用这些范围发布访问令牌。
我的问题是:在 OIDC 中,客户端能否同时通过 OIDC 和 OAuth 范围?例如。在 /authorize 端点中,客户端可以传递诸如 openid name read-api write-api admin 这样的范围ID token 和 access token 具有所有这些范围?访问令牌可用于调用 /userinfo 端点和访问用户资源?这是标准做法吗?
是的,事实上所有范围都是“OAuth 2.0”范围,因为 OpenID Connect 是 OAuth 2.0 的超集。作用域实际上不绑定到 ID 令牌,它们绑定到访问令牌。生成的访问令牌可用于调用用户信息端点以及任何其他受 OAuth 2.0 保护的资源。
我知道 OIDC 用于联合身份验证,在 /authorize 端点中我们可以传递 standard/custom 范围,例如 openid 配置文件名称电子邮件 等。并且基于我们在 ID 令牌中添加声明,并且还会为这些范围颁发访问令牌,客户端可以使用访问令牌调用 /userinfo 端点。作为回应,我们 return 基于 OIDC 范围的用户信息。
类似地,在 OAuth2.0 的情况下,客户端可以请求 OAuth 范围(基于资源服务器上支持的范围),例如 create-api read-api delete-api等;并在用户同意后,使用这些范围发布访问令牌。
我的问题是:在 OIDC 中,客户端能否同时通过 OIDC 和 OAuth 范围?例如。在 /authorize 端点中,客户端可以传递诸如 openid name read-api write-api admin 这样的范围ID token 和 access token 具有所有这些范围?访问令牌可用于调用 /userinfo 端点和访问用户资源?这是标准做法吗?
是的,事实上所有范围都是“OAuth 2.0”范围,因为 OpenID Connect 是 OAuth 2.0 的超集。作用域实际上不绑定到 ID 令牌,它们绑定到访问令牌。生成的访问令牌可用于调用用户信息端点以及任何其他受 OAuth 2.0 保护的资源。