gpt4 book ai didi

c# - OAUTH2 如果我有访问权限或 refresh_Token,我如何获取用户名

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:03 25 4
gpt4 key购买 nike

我有一个使用 oauth2 连接到第三方应用程序的 C# 应用程序。首先,用户被重定向到一个外部应用程序 (ERP),他在其中输入用户名和密码,并生成一个有效期为 1 小时的访问 token 和一个有效期为 50 年的刷新 token 。我在我的应用程序中使用这个刷新 token ,并基于此我得到一个新的访问 token 。我有 ClientId 和 ClientSecret。我可以获得具有这 2 个 token 的登录用户名吗?

Request :
POST /connect/token HTTP/1.1
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded;charset=UTF-8

"grant_type=refresh_token&refresh_token=<refresh_token>"

Response:
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{
"access_token": <access_token>,
"refresh_token": <refresh_token>,
"token_type":"bearer",
"expires_in":3600
}

最佳答案

如果您收到JSON Web token 格式的 token (通常称为自包含访问 token ),则您可以解码 token 负载并获取用户名。通常,这可以设置为主题(“子”)声明,也可以作为 JWT 中的专用声明发送。引用这个link了解 JWT 声明。

如果不是这种情况,这意味着访问 token 是不透明的,那么您需要使用 token 内省(introspection)端点。您需要验证此类端点是否由您的授权服务器(为您提供访问 token 的外部方)提供。如果是这样,您可以调用内省(introspection)端点并获取 token 详细信息。此响应用于验证访问 token 的有效性以及获取用户名等声明。请从这个 link 中阅读更多关于内省(introspection)响应的信息.

或者,您可以切换到 [OpenID Connect] (OIDC) 3 .这将在 token 响应中包含一个 ID token ,它是一个 JWT。您可以使用它来获取用户名(+ 其他用户信息)并在 JWT 验证之上对最终用户进行身份验证。验证您的授权服务器是否支持 OIDC。

关于刷新 token ,您必须具有有效的访问 token 或有效的 token 响应才能获得上述所有内容。除了获取新的更新 token 外,刷新对您的应用程序没有任何意义。

关于c# - OAUTH2 如果我有访问权限或 refresh_Token,我如何获取用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55006104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com