2016-08-08 4 views
1

.NETコアプロジェクトでカスタムJWTを使用しています(jose-jwt)。 (私が試した他の認証方法はすべて地獄のように混乱していました)。私はすべての実装を行っていますが、どのリクエストがどのようにトークンを確認できるかわかりません。私のAPIの関数のほとんどはこの認証を必要とするので、それをグローバルに登録し、がそれを必要としない関数を指定したいとします。は本質的に[AllowAnonymous]です。 authが失敗した場合、401を返すようにしたいと思います。.NETコアでJWTをグローバルに承認する

コードは完全に私のために書かれている必要はありませんが、これを書いてパイプラインに挿入する方法はわかりません。どうすればこれを達成できますか?私はこれについて正しい方向に進むつもりですか?

答えて

2

JWTの検証は、基本認証要求の検証と同じです。

ミドルウェアの実装については、https://github.com/blowdart/idunno.Authenticationを参照してください。

+0

を参照してください認可のために

app.UseJwtBearerAuthentication(new JwtBearerOptions { Authority = ..., Audience = ... }); 

この方法の問題点はありますか?彼はそのreadmeに完全に反対しています。 – vaindil

+1

問題は基本です。 Basicでは、トークンに暗号化されていないパスワードが含まれています。 JWTトークンにはパスワードは含まれていませんが、署名されています(対称/非対称キーを使用)。 JWTを読み込んで検証するには、BasicAuthenticationHandlerファイルを編集する必要があります。 – Kalten

+0

ああ、さて、私は今参照してください。ありがとう、ありがとう! – vaindil

2

まず、ConfigureメソッドでJwtBearerAuthenticationミドルウェアを使用する必要があります。グローバルMVC Core How to force/set global authorization for all actions?

services.AddMvc(config => 
{ 
    var policy = new AuthorizationPolicyBuilder() 
        .RequireAuthenticatedUser() 
        .Build(); 
    config.Filters.Add(new AuthorizeFilter(policy)); 
}); 
関連する問題