我们正在实施 IAuthorizationServerHost 以适应我们网站组的 OAuth2 功能。
我正在使用从 0.23 包升级的 DontNetOpenAuth 0.25 包,该包需要一些更改,需要一些代码更改。
在 AuthorizationServer.HandleTokenRequest() 调用期间,我得到以下信息
DotNetOpenAuth.OAuth:2012-08-24T18:06:55 错误DotNetOpenAuth.OAuth - 客户端凭据授予客户端访问请求“ *省略*“被授权服务器主机拒绝。DotNetOpenAuth.OAuth2.AuthorizationServer.dll DotNetOpenAuth.Messaging.Channel 中发生了“DotNetOpenAuth.OAuth2.TokenEndpointProtocolException”类型的第一次机会异常:2012-08-24T18:06:55 调试 DotNetOpenAuth.Messaging.Channel - 准备发送 AccessTokenFailedResponse (2.0) 消息。DotNetOpenAuth.Messaging.Bindings: 2012-08-24T18:06:55 调试 DotNetOpenAuth.Messaging.Bindings - 绑定元素 DotNetOpenAuth.OAuth2.ChannelElements.MessageValidationBindingElement 不适用于消息。DotNetOpenAuth.Messaging .Bindings: 2012-08-24T18:06:55 DEBUG DotNetOpenAuth.Messaging.Bindings - 绑定元素 DotNetOpenAuth.OAuth2.ChannelElements.TokenCodeSerializationBindingElement 不适用于消息。DotNetOpenAuth.Messaging.Channel: 2012-08-24T18:06:55 INFO DotNetOpenAuth.Messaging.Channel - 准备传出 AccessTokenFailedResponse (2.0) 消息:错误:未授权客户端
DotNetOpenAuth.Messaging.Channel:2012-08-24T18:06:55 调试 DotNetOpenAuth.Messaging.Channel - 发送消息:AccessTokenFailedResponse
我可以确认 client_id 是正确的。
有没有人对这个问题有一些建议或经验?
我尝试使用 chrome 的 REST 控制台手动创建请求,并且得到了相同的结果。
根据要求提供一些代码片段(更改以保护无辜者)
//客户端
public class MyOAuth2Client : OAuth2Client
{
...
}
上述类在 MVC4 AuthConfig.cs 中注册为客户端
QueryAccessToken 函数被覆盖,我使用 DotNetOpenAuth 库中的 WebServerClient 对象来构造请求。MyWebServerClient.GetClientAccessToken();
//服务器端
我已经实现了 IAuthorizationServerHost 接口并构造了一个授权服务器;
AuthorizationServer _authorizationServer = new AuthorizationServer( new OAuth2AuthorizationServerHost() );
令牌查询通过
public ActionResult Token()
{
_authorizationServer.HandleTokenRequest( Request ).AsActionResult();
}