【发布时间】:2019-05-22 04:50:44
【问题描述】:
我将 IdentityServer3 与 EF 一起使用。我有 API 项目,我想使用 access token 对其访问进行身份验证。
因此,基于sample,我在身份服务器中配置了客户端(用于 API 项目),如下所示
客户端属性
客户端密码 (请注意我输入的任何文本作为秘密值,管理 UI 会自动转换它)
然后使用 POSTMAN 我正在尝试获取访问令牌,但我总是收到 invalid_client 错误
我也尝试过使用 C# 代码获取访问令牌,但得到相同的错误
static TokenResponse GetClientToken()
{
var client = new TokenClient(
"https://xxxxxxxx/connect/token",
"A0AD7FB8-2881-484F-xxxxxxxxxxxxxxxxxx",
"a84iThYxAA5eZpkIzt9xxxxxxxxxxxxxxxxxx");
return client.RequestClientCredentialsAsync("api").Result;
}
更新 1
这是我在身份服务器的日志中看到的内容
2018-12-21 19:29:59.284 +00:00 [信息] 开始令牌请求
2018-12-21 19:29:59.301 +00:00 [调试] 开始客户端验证
2018-12-21 19:29:59.302 +00:00 [调试] 开始解析基本身份验证密钥
2018-12-21 19:29:59.302 +00:00 [调试] 开始解析帖子正文中的秘密
2018-12-21 19:29:59.304 +00:00 [调试] 解析器发现秘密:“PostBodySecretParser”
2018-12-21 19:29:59.304 +00:00 [信息] 发现秘密 ID:“A0AD7FB8-2881-484F-ABE0-xxxxxxxx”
2018-12-21 19:29:59.943 +00:00 [调试] 跳过秘密:无描述,秘密不是 SharedSecret 类型。
2018-12-21 19:29:59.943 +00:00 [调试] 未找到匹配的散列密钥。
2018-12-21 19:29:59.943 +00:00 [信息] 秘密验证器无法验证秘密
2018-12-21 19:29:59.944 +00:00 [信息] 客户端验证失败。
2018-12-21 19:29:59.945 +00:00 [信息] 结束令牌请求
2018-12-21 19:29:59.946 +00:00 [信息] 返回错误:invalid_client
【问题讨论】:
-
发现秘密 ID:“A0AD7FB8-2881-484F-ABE0-xxxxxxxx”。此 Guid 是否旨在成为客户端 ID,而不是秘密?
-
是的,它的目的是作为客户端 ID,您可以在客户端属性中看到。我附上的屏幕截图
-
-
我确认它们是正确的。我认为这与客户秘密的类型有关吗?客户端密码的
type应该是什么?任何字符串? -
尝试秘密类型为
SharedSecret而不是clientsecret
标签: oauth-2.0 access-token identityserver4 openid-connect identityserver3