通过 OAuth2 实现(内部开发或第三方,如 Google、Facebook、Login With Amazon 等),是否可以代表登录到移动应用程序或 Web 应用程序的用户生成身份验证代码,而无需需要用户执行任何操作?
获取身份验证码的典型流程需要用户对所请求的范围进行身份验证和授权。但在这种情况下,用户已经通过应用程序的身份验证,因此我想避免要求用户再次登录。
调用外部第三方 API 需要身份验证代码,该 API 最终将用身份验证代码交换刷新/访问令牌。后端系统(与 API 关联)需要根据与其共享的身份验证代码获取自己的刷新/访问令牌。这不是一次性使用令牌;系统需要为登录用户拥有自己的令牌,独立于移动客户端。
可以获取另一个客户端的用户令牌。您不需要新的身份验证代码,只需使用一些参数调用令牌端点即可。例如,在 Keycloak 中,此流程称为令牌交换。您需要在 Keycloak 中配置客户端,然后可以使用您拥有的访问令牌调用令牌端点。
{
client_id: your client id,
client_secret: your client secret,
subject_token: token you have
audience: target client id,
grant_type: urn:ietf:params:oauth:grant-type:token-exchange,
requested token type: urn:ietf:params:oauth:token-type:refresh_token
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关此流程的信息: https://tools.ietf.org/id/draft-ietf-oauth-token-exchange-12.html
它也被称为代表流,就像在 Azure 中一样: https: //learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow
| 归档时间: |
|
| 查看次数: |
1499 次 |
| 最近记录: |