c# - 使用 IdentityModel/IdentityServer4 验证会话仍然有效
问题描述
我无法让 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
解决方案
我在这里最好的猜测是它一定是一个参考令牌流。这有点令人困惑。这里的混乱是ClientId
and ClientSecret
。
您在创建 时提供的
ClientId
and是最终用户的and 。ClientSecret
AccessToken
ClientId
ClientSecret
您在反省时提供的
ClientId
and应该是您的资源的and It's ,而不是最终用户and。ClientSecret
AccessToken
Name
Secret
ClientId
ClientSecret
在IdentityServer
中,自省端点的客户端是 API 或资源,而不是最终用户。在此处阅读完整文档。
在您的情况下,在自省时传递 as 的asapi1
和ClientId
Secret 。它应该工作。api1
ClientSecret
AccessToken
推荐阅读
- java - 通过命令行在终端中运行java程序
- bash - 如何重新启动所有 docker 容器并在每次重新启动之间暂停?
- servlets - web.xml 页面找不到主页欢迎文件
- java - Java 11`HttpClient`下载但没有?(负内容长度)
- python - 使用带有重新声明命名空间的 python ElementTree 从 xml 中查找命名空间
- linux - 在附加到 tee 的重定向中获取嵌套命令的退出状态
- python - 结束我的秘密文字游戏并在 Python 中输出用户猜测数
- python - 如何在相对函数调用中附加熊猫数据集
- javascript - 试图缓解 JavaScript 上的点击事件
- python - 如何使用 python 组合多个 .h5 文件(但形状相同)?