10

現在、Web API 2、OWIN ミドルウェア、および JWT のテクノロジの組み合わせを使用して、新しいアプリのクレーム ベース認証の概念実証を作成しようとしています。

簡単にするために、Web API 2 プロジェクト テンプレートから始めて、認証を「個々のユーザー アカウント」に変更しました。私が作成したサンプル クライアントは、/Token を呼び出してトークンを取得し、OAuth ベアラー トークンを使用してサンプル エンドポイントを呼び出すことができました。ここまでは順調ですね。次に、次のコードを Startup.Auth.cs に追加して、JwtBearerAuthentication を有効にしてみました。

    var jwtOptions = new JwtBearerAuthenticationOptions
    {
        AllowedAudiences = audiences,
        IssuerSecurityTokenProviders = new[] { 
            new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey) }
    };

    app.UseJwtBearerAuthentication(jwtOptions);

Web API 2 が /Token への呼び出しから JWT を返し始めると予想していましたが、何もしていないようです。私はこれに対して数日間頭を悩ませてきましたが、うまくいきませんでした.Microsoftのドキュメントはあまり公開されていません.

また、私の OAuthAuthorizationServerOptions に以下を追加しようとしました

AuthorizationCodeFormat = new JwtFormat(audience, new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey))

また、完全に間違ったことをしようとしている可能性もあります。

どんなアイデアでも大歓迎です。

4

4 に答える 4

6

さて、OAuthAuthorizationServerOptions例で行っているように、認証コードではなく、アクセストークンの形式を指定できる設定があります。

したがって、代わりに:

AuthorizationCodeFormat = new JwtFormat(audience, new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey))

あなたが持っている必要があります:

AccessTokenFormat = new JwtFormat(audience, new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey))
于 2015-03-04T22:01:03.860 に答える
5

Windows Identity Foundation は、JWT ではなく、独自のトークン形式を使用します。上記の JWT コードは、トークンを生成するためではなく、消費するためのものです。ASP.NET フォーラムに有益な議論があります。

ただし、2014 年の後半に Microsoft は、JSON Web Token Handlerを使用して、Windows Identity Foundation での JWT のサポートを正式にリリースしました。あなたが説明した問題を解決するために、そのパッケージをインストールして使用できるはずです。

于 2015-02-23T21:30:41.697 に答える
0

応答でのトークンの出力方法をオーバーライドする現在の方法はないと思います。Katana のソース コード リポジトリにある OAuthAuthorizationServerHandler を調べてみました。

InvokeTokenEndpointAsync メソッドには、応答を生成する JsonTextWriter を作成するセクションがあることがわかります。あらゆる種類の拡張が影響するような方法では行われません。

これもイライラします。Microsoft のライブラリには、応答のシリアル化を簡単にオーバーライドする方法が必要です。独自のカスタム パラメータを応答に追加することさえできません。

于 2014-06-20T20:21:21.303 に答える
-2

このサンプルを使用できますhttps://github.com/thinktecture/Thinktecture.IdentityModel/tree/master/samples/OAuth2/EmbeddedResourceOwnerFlow

プロジェクトで認証ロジックを記述するため。その後、承認を必要とする各コントローラーまたはアクションに [Authorize] 属性を追加する必要があります(OWIN Katanaには、トークン、承認、およびその他の有用なものを検証するロジックが含まれています)。

于 2014-03-11T13:16:46.700 に答える