agu*_*agu 5 jwt asp.net-identity asp.net-core identityserver4
我在获取当前用户的 access_token 时遇到问题。这是我的设置:
在 QuickstartIdentityServer (QIS) 站点(用户详细信息页面)的一部分中,我想使用 access_token 调用 API 端点来验证请求。我正在努力从我的 QIS 站点检索当前用户的 access_token。每当我打电话时,HttpContext.GetTokenAsync("access_token")我都会得到一个空值。我看过 IdSrv4 文档的这一部分:https ://identityserver4.readthedocs.io/en/release/quickstarts/5_hybrid_and_api_access.html?highlight = gettokenasync但它似乎适用于 MVC 客户端而不是我自己的身份服务器。
任何人都可以阐明如何获取我用户的 access_token ?
谢谢
编辑
这是尝试更好地解释我的问题的起点:https : //github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/6_AspNetIdentity/src/IdentityServerWithAspNetIdentity
从这个 QIS 项目开始,我想获取登录用户的访问令牌。因此,例如,如果我编辑HomeController添加此调用:
public async Task<IActionResult> Index()
{
var accessToken = await HttpContext.GetTokenAsync("access_token");
return View(accessToken);
}
Run Code Online (Sandbox Code Playgroud)
然后我就可以在 Auth Header 中使用这个令牌调用我的 NodeJS API。
希望这能更好地解释我的问题。
因此,我设法使用专用客户端通过我的 API 进行身份验证,使用客户端凭据授予和以下调用来获取 access_token:
var disco = await DiscoveryClient.GetAsync("http://localhost:5000");
var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret);
var tokenResponse = await tokenClient.RequestClientCredentialsAsync(scope);
Run Code Online (Sandbox Code Playgroud)
然后我可以将返回的 access_token 添加到 API 的请求标头中tokenResponse:
using(var client = new HttpClient()) {
client.SetBearerToken(tokenResponse.AccessToken);
...
// execute request
}
Run Code Online (Sandbox Code Playgroud)
缺点是我无法在 API 端“模拟”当前登录的 IS。
| 归档时间: |
|
| 查看次数: |
2333 次 |
| 最近记录: |