2016-06-23 16 views
0

私はいくつかのクライアントアプリケーションが使用しているwebapiバックエンドを持っています。 apiはjwt認証で保護されており、次の例に基づいています。https://github.com/mrsheepuk/ASPNETSelfCreatedTokenAuthExample。私はまだトークンベースの認証のすべてのコンセプトにはあまり慣れていないので、私はこれでいくつかの指針を使用することができます。私の問題は、私のアプリケーションが同じapiを利用するが、各アプリケーションのアクセスを特定のエリアやコントローラに制限する必要があるということです。私は一般的に、角度2を持っているAsp.net 5 Web APIのベアラ認証と複数のエリア

[Authorize("Api")] 

ポリシーは

クライアントからの安全な要求のために
authOptions.AddPolicy("Api", new AuthorizationPolicyBuilder() 
     .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) // "Bearer" scheme 
     .RequireAuthenticatedUser().Build()); 

とスタートアップに追加されます。私はエリア内のメソッドを守ることができる例によれば

単純にヘッダーにjwtを追加するだけです。

headers.append('Authorization', 'Bearer ' + jwt); 

私はすべてを知りませんここでの仕組みだが、私は、安全なメソッドが要求されたときに、「Api」属性の装飾が、apiの特定のルートでどのポリシーを使用するかを決定/制限するものと仮定しています。

ベストプラクティスとはどのようにして、個別にアクセス可能なセクションで動作するように拡張するのですか?

答えて

0

ActionFilterAttributeを作成し、すべての操作で使用できます。

お客様の要件に応じてFrameworkAuthoriseフィルターメソッドを実装できます。

enter image description here

Global.ApiKeyあなたがそのアプリケーションへのアクセスを持っているか、いないのアイデンティティへのアプリケーションのための固有のコードです。

 [FrameworkAuthorise(Global.ApiKey, AuthorisationType.None)] 
    public async Task<IHttpActionResult> Get()   
    { 
     // code goes here 
    } 

    [FrameworkAuthorise(Global.ApiKey, AuthorisationType.Bearer)] 
    public async Task<IHttpActionResult> Post()   
    { 
     // code goes here 
    } 

+0

あなたのVenkyをありがとう、私はこれの感覚を取得し、それは私のプロジェクトで動作させることができれば、私が表示されます。 – nplus

関連する問題