我们正在实施IAuthorizationServerHost以适应我们的网站组的OAuth2功能。
我使用的DontNetOpenAuth 0.25软件包已从0.23软件包升级,需要进行一些需要更改代码的更改。
在AuthorizationServer.HandleTokenRequest()调用期间,我得到以下内容
DotNetOpenAuth.OAuth:2012-08-24T18:06:55错误DotNetOpenAuth.OAuth - 客户端凭据授予客户端访问请求 授权服务器主机拒绝了“ * OMITTED * ”。一个 第一次机会异常的类型 发生了'DotNetOpenAuth.OAuth2.TokenEndpointProtocolException' DotNetOpenAuth.OAuth2.AuthorizationServer.dll DotNetOpenAuth.Messaging.Channel: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调试DotNetOpenAuth.Messaging.Bindings - 绑定 元件 DotNetOpenAuth.OAuth2.ChannelElements.TokenCodeSerializationBindingElement 不适用于消息。 DotNetOpenAuth.Messaging.Channel: 2012-08-24T18:06:55 INFO DotNetOpenAuth.Messaging.Channel - 准备好了 传出的AccessTokenFailedResponse(2.0)消息: 错误:unauthorized_client 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 lib中的WebServerClient对象来构造请求。 MyWebServerClient.GetClientAccessToken();
//服务器端
我已经实现了IAuthorizationServerHost接口并构建了授权服务器;
AuthorizationServer _authorizationServer = new AuthorizationServer( new OAuth2AuthorizationServerHost() );
令牌查询通过
处理public ActionResult Token()
{
_authorizationServer.HandleTokenRequest( Request ).AsActionResult();
}