1

私はasp.net MVC 4.0を使用しており、 DotNetOpenAuthライブラリを使用してOAuthホストを構築しています。OAuthControllerにAuthorizeメソッドを実装しようとしています:

[Authorize, AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Authorise()
{
    using (OAuth2AuthorizationServer server = (new OAuth2AuthorizationServer(new X509Certificate2(ConfigurationManager.AppSettings["AbsolutePathToPfx"], ConfigurationManager.AppSettings["CertificatePassword"]), new X509Certificate2(ConfigurationManager.AppSettings["AbsolutePathToCertificate"]))))
    {
        AuthorizationServer authorizationServer = new AuthorizationServer(server);

        EndUserAuthorizationRequest pendingRequest = authorizationServer.ReadAuthorizationRequest();
        if (pendingRequest == null)
        {
            throw new HttpException((int) HttpStatusCode.BadRequest, "Missing authorization request.");
        }
        //**
    }
}

そして私は得ていpendingRequest == nullます!

メソッドIClientDescription GetClient(string clientIdentifier)inOAuth2AuthorizationServerを呼び出す必要があることは確かですReadAuthorizationRequestが、実際には、私の場合は呼び出されません。

なぜそうなのか、誰にも推測できますか?

4

2 に答える 2

0

私は問題を理解しました。簡単に言えば、クライアントが正しく実装されていませんでした。クライアントは、次のような情報を含める責任があります。

  • クライアントID
  • redirect_uri
  • 範囲
  • 応答タイプ

すべてのフィールドが設定されたわけではありません

于 2013-02-21T16:05:09.680 に答える
0

ここで説明されているようにコード サンプルを使用している場合: https://github.com/DotNetOpenAuth/DotNetOpenAuth/wiki/Security-scenarios

OAuthController Auth() アクションを呼び出すサンプル値を次に示します。

- client_id=RP
- response_type=code
- redirect_uri=https://localhost/RP/Secure4ownAuthSvr/OAuth
- scope=http://localhost/demo
- state=""

呼び出しは次のようになります (Fiddler を使用):

GET
http://localhost/OAuth2/Auth?client_id=RP&response_type=code&redirect_uri=https://localhost/RP/Secure4ownAuthSvr/OAuth&state=&scope=http://localhost/demo

POST
http://localhost/OAuth2/Auth
Content-Type: application/x-www-form-urlencoded; charset=utf-8
client_id=RP&response_type=code&redirect_uri=https://localhost/RP/Secure4ownAuthSvr/OAuth&state=&scope=http://localhost/demo
于 2014-03-31T16:22:10.383 に答える