我无法让IdentityModel验证令牌是否仍然有有效的会话。这是我的客户代码。_http是HttpClient的一个实例。
在这种情况下,不要用用户名/密码来评判我。这是一个值得信赖的应用程序,我首先从一个更简单的场景开始,接下来我计划继续使用混合模型。
var discovery ??= await _http.GetDiscoveryDocumentAsync("http://localhost:5000");
var response = await _http.RequestPasswordTokenAsync(new PasswordTokenRequest
{
Address = discovery.TokenEndpoint,
ClientId = ClientId,
ClientSecret = ClientSecret,
Scope = "api1",
UserName = "test",
Password = "test"
}); // This succeeds while returning an AccessToken
var introspectionResponse = await _http.IntrospectTokenAsync(new TokenIntrospectionRequest
{
Address = discovery.IntrospectionEndpoint,
ClientId = ClientId,
ClientSecret = ClientSecret,
Token = response.AccessToken
}); // This fails with an unauthenticated error发布于 2021-10-06 04:54:59
我在这里的最佳猜测是,它必须是一个引用令牌流。有点让人费解。这里的困惑是ClientId和ClientSecret。
ClientId时提供的ClientSecret和AccessToken是最终用户的ClientId和ClientSecret。ClientId和ClientSecret时提供的AccessToken应该是资源的Name,而不是最终用户ClientId和ClientSecret,而是Secret。在IdentityServer中,内省端点的客户端是API或Resource,而不是最终用户。阅读完整的docs 这里。
在您的例子中,将api1传递为ClientId,将api1的秘密传递为ClientSecret,同时内省AccessToken。应该管用的。
https://stackoverflow.com/questions/69459686
复制相似问题