サイト グループの OAuth2 機能に対応するために IAuthorizationServerHost を実装しています。
コードの変更が必要ないくつかの変更が必要な 0.23 パッケージからアップグレードした DontNetOpenAuth 0.25 パッケージを使用しています。
AuthorizationServer.HandleTokenRequest() 呼び出し中に、次のメッセージが表示されます
DotNetOpenAuth.OAuth: 2012-08-24T18:06:55 ERROR DotNetOpenAuth.OAuth - クライアント資格情報がクライアントのアクセス要求を許可します " *省略*" 承認サーバー ホストによって拒否されました。タイプ 'DotNetOpenAuth.OAuth2.TokenEndpointProtocolException' の初回例外例外が DotNetOpenAuth.OAuth2.AuthorizationServer.dll DotNetOpenAuth.Messaging.Channel で発生しました: 2012-08-24T18:06:55 DEBUG DotNetOpenAuth.Messaging.Channel - AccessTokenFailedResponse (2.0) メッセージを送信する準備をしています. DotNetOpenAuth.Messaging.Bindings: 2012-08-24T18:06:55 DEBUG 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 DEBUG 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();
}