客户端凭据授予具有空值主题的流,导致内部服务器错误

时间:2016-10-19 07:51:28

标签: oauth-2.0 identityserver3

我有一个Windows服务(没有用户交互),它使调用受保护的服务(例如,调用REST / WEB API)。我尝试使用Client Credentials Flow,但看起来IdentityServer3不了解Client Credentials流。主题值(应该包含ClaimsPrincipal对象)为null。知道这里有什么问题吗? IdentityServer3是否支持客户端凭据流?在IdentityServer3中使用Client Credentials流的正确方法是什么?

以下是我的客户端代码,它最终从IdentityServer3获取内部服务器错误的响应:

Debug.Print Join$(Array(1, 2, 3), ".") 'Prints 1.2.3

1 个答案:

答案 0 :(得分:1)

IdentityServer 3支持客户端凭据OAuth授权类型(请参阅Flow property on the Client class)。

错误将是一个配置问题,因此打开logging for IdentityServer,它会告诉您请求失败的原因。

具有主题声明的访问令牌的正确流程

要获取可代表用户访问受保护资源的访问令牌,必须使用具有用户/身份知识的授权类型/流。

客户端凭据仅用于机器到机器的通信,它没有用户/身份的概念。

理想情况下,如果用户已通过身份验证(他们登录到系统),则可以在登录时向他们发出访问令牌。这可以使用任何OpenID Connect流程(隐式,授权代码或混合)完成。

如果未对用户进行身份验证,则可以使用“资源所有者”流。此流程通常被认为是遗留的,需要用户的用户名和密码。