1

サーバーから適切なoauth_verifier値を受け取りましたが、access_tokenProcessUserAuthorizationエンドポイントへの呼び出しを介して渡されていません。

DotNetOpenAuth3.3.1とWebConsumerの実装を使用しています。私が使用しているサーバーは、1.0.1ではなくOAuth1.0aを使用しています。

DotNetOpenAuthで1.0aを使用するように強制する必要がありますか?

2010-01-16 13:19:44,343 [5] DEBUG DotNetOpenAuth.Messaging.Channel [(null)] <(null)> - After binding element processing, the received UserAuthorizationResponse (1.0.1) message is: 
    oauth_verifier: dEz9lE9AA1gcdr6oCbmD
    oauth_token: vauHNVOCITlbGCuqycWn

2010-01-16 13:19:44,346 [5] DEBUG DotNetOpenAuth.Messaging.Channel [(null)] <(null)> - Preparing to send AuthorizedTokenRequest (1.0) message.
2010-01-16 13:19:44,346 [5] DEBUG DotNetOpenAuth.Messaging.Bindings [(null)] <(null)> - Binding element DotNetOpenAuth.OAuth.ChannelElements.OAuthHttpMethodBindingElement applied to message.
2010-01-16 13:19:44,346 [5] DEBUG DotNetOpenAuth.Messaging.Bindings [(null)] <(null)> - Binding element DotNetOpenAuth.Messaging.Bindings.StandardReplayProtectionBindingElement applied to message.
2010-01-16 13:19:44,346 [5] DEBUG DotNetOpenAuth.Messaging.Bindings [(null)] <(null)> - Binding element DotNetOpenAuth.Messaging.Bindings.StandardExpirationBindingElement applied to message.
2010-01-16 13:19:44,346 [5] DEBUG DotNetOpenAuth.Messaging.Channel [(null)] <(null)> - Applying secrets to message to prepare for signing or signature verification.
2010-01-16 13:19:44,348 [5] DEBUG DotNetOpenAuth.Messaging.Bindings [(null)] <(null)> - Signing AuthorizedTokenRequest message using HMAC-SHA1.
2010-01-16 13:19:44,349 [5] DEBUG DotNetOpenAuth.Messaging.Bindings [(null)] <(null)> - Constructed signature base string: GET&http%3A%2F%2Fx-staging.indivo.org%3A8000%2Foauth%2Faccess_token&oauth_consumer_key%3Doak%26oauth_nonce%3DgPersiZV%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1263676784%26oauth_token%3DvauHNVOCITlbGCuqycWn%26oauth_version%3D1.0
2010-01-16 13:19:44,349 [5] DEBUG DotNetOpenAuth.Messaging.Bindings [(null)] <(null)> - Binding element DotNetOpenAuth.OAuth.ChannelElements.SigningBindingElementChain applied to message.
2010-01-16 13:19:44,351 [5] INFO  DotNetOpenAuth.Messaging.Channel [(null)] <(null)> - Prepared outgoing AuthorizedTokenRequest (1.0) message for http://x-staging.indivo.org:8000/oauth/access_token: 
    oauth_token: vauHNVOCITlbGCuqycWn
    oauth_consumer_key: XXXXXXmyComsumerKeyXXXXXX
    oauth_nonce: gPersiZV
    oauth_signature_method: HMAC-SHA1
    oauth_signature: xNynvr2oFlqtdoOKOl2ETiiTLGY=
    oauth_version: 1.0
    oauth_timestamp: 1263676784

2010-01-16 13:19:44,351 [5] DEBUG DotNetOpenAuth.Messaging.Channel [(null)] <(null)> - Sending AuthorizedTokenRequest request.
2010-01-16 13:19:44,351 [5] DEBUG DotNetOpenAuth.Http [(null)] <(null)> - HTTP GET http://x-staging.indivo.org:8000/oauth/access_token
2010-01-16 13:20:34,657 [5] ERROR DotNetOpenAuth.Http [(null)] <(null)> - WebException from http://x-staging.indivo.org:8000/oauth/access_token: 
<h4>Internal Server Error</h4>

log4netログへのペーストビンリンク

4

1 に答える 1

1

ログを見ると、DotNetOpenAuth が検証メッセージを受信し、ログに「UserAuthorizationResponse (1.0.1) を受信しました」とある 1.0a メッセージとして認識されていることがわかります (1.0.1 は DNOA の 1.0a の言い方であるため)。 )。

ログから、DNOA が「AuthorizedTokenRequest (1.0)」メッセージを送信することにも注意してください。これは、インスタンスにServiceProviderDescription渡したオブジェクトのプロパティがではなく に設定されていることを強く示唆しています。WebConsumerProtocolVersionV10V10a

最初にユーザをサービス プロバイダに送信したときは を正しく初期化していても、2 回目に を呼び出したときはバージョン番号を設定せずに初期化している可能性があります。ServiceProviderDescriptionWebConsumer.ProcessAuthorization

もう 1 つの可能性は、サービス プロバイダーが OAuth 1.0a 仕様に違反しており、DotNetOpenAuth がこれを検出して設定を上書きし、サービス プロバイダーを単なる OAuth 1.0 サービス プロバイダーとして扱うことを決定することです。これが起こっている場合、独自のServiceProviderDescriptionオブジェクトのProtocolVersionプロパティが 1.0.1 から 1.0 に変更されていることがわかり、ログにはこの部分文字列「Expected OAuth service provider at endpoint」が含まれます...

于 2010-01-17T01:27:27.893 に答える