2017-03-29 25 views
0

カスタム認証と承認を実装する必要のあるWeb APIがあります。承認は、以下に示すようにリソースとアクションによって定義する必要があります。カスタム認証 - Web API

[Authorize("users","view")] 
public async Task<IHttpActionResult> GetAsync() 
{ 
} 

カスタム認証フィルタを使用してこれを実装する方法はありますか?

また、Web APIはクライアント証明書によって保護されており、呼び出し元はリクエストヘッダーで渡されるキー別の識別子です。 Keyは、カスタム認証フィルタを使用して認証されます。

Regarads、

ジョン

答えて

1

はいカスタム認証を作成し、コントローラまたは許可する必要があります方法に置くことができます。

サンプル例では、私はあなたが私の本当の問題は何であったかを理解していなかったと思います。この

public class DoThisController : ApiController 
{ 
    [CustomAuthorize("users","view")]// for specific methods 
    public string Get() 
    { 
     return "Sample Authorized"; 
    } 
} 
+0

のようになります。カスタム認証ロジックとサンプルのコントローラを行うことができます。ここ

public class CustomAuthorize : System.Web.Http.AuthorizeAttribute { private string Resource { get; set; } private string Action { get; set; } public CustomAuthorize(string resource, string action) { Resource = resource; Action = action; } public override void OnAuthorization( System.Web.Http.Controllers.HttpActionContext actionContext) { base.OnAuthorization(actionContext); //Check your post authorization logic using Resource and Action //Your logic here to return authorize or unauthorized response } } 

以下の通りです。私は、ResourceとActionという2つのパラメータを受け入れることができるCustom Authorization属性を書きたいと思います。私は、ユーザーがアクセスしようとしているリソースと、ユーザーがリソース上で実行しているアクションを提供することによって、メソッドの認可を定義することができます。 –

+0

@SillyJohnあなたの特定の目的のために編集された答えを確認してください。 –

+0

@SillyJohnあなたが投票したときに解決策があなたにとって役に立たなかった正当な理由を述べてください。私はあなたの目的を具体的に変更しました。これは役に立ちましたか? –