2012-02-28 15 views
6

ASP.NET Web APIについての設計と学習では、いくつかの問題を抱えています。ASP.NET Web Api - クエリーストリング値とAPIセキュリティからの認証

OAuthを使用しないSecure REST APIの設計については、excellent postに触発されています。さまざまなトークンと情報の検証にどのように最善のアプローチが必要なのか疑問に思っています。

簡単な要約は、私が(クエリ文字列で)のために、以下の情報を尋ねることでしょう..です

  • ユーザID
  • APIキー
  • タイムスタンプ
  • 秘密に基づいて署名ハッシュユーザが発行され、要求値と共にハッシュされたキー。

私の質問/疑問はこれです

これは健全なアプローチであれば、ASP.NET Web APIを使用してこれを実装する最良の方法は何でしょうか?

私は現在、私のメソッドにマークを付けることができるカスタム属性、クエリ文字列から必要なものを取得する種類のAuthorize属性、またはすべての値を含むいくつかのPOCO型オブジェクトを使用して、すべての権限タイプコードを1か所に保持する。

誰でもこれに関する経験や考えがありますか?あなたが見ているかもしれないとして

感謝:)

+0

おそらく、グローバルBegin_RequestハンドラまたはグローバルAuthenticate_Requestハンドラのいずれかで認証コードを呼び出すことができます。 –

答えて

5

は現在、AuthorizeAttributeアプローチは、Web APIで使用されています。私は、この属性を認可が必要な個々の項目に置くことができる点で、これはかなり良いアプローチだと思います。

私はSystem.Web.Http.Filters.AuthorizationFilterAttributeを延長して承認を行いました。あなたがそれを拡張した後、すべての承認の詳細はあなた次第であり、あなたはたくさんの選択肢を持っています。

+0

例がありますか? – daanl

+0

私のBasicAuthorizationFilterAttributeは、System.Web.Http.Filters.AuthorizationFilterAttributeを拡張してから、OnAuthorizationメソッドをオーバーライドします。 OnAuthorizationメソッドはパラメータとしてHttpActionContextを受け入れます。このオブジェクトを使用すると、要求メッセージにアクセスしてそこから必要なデータを取得できます(この場合はHttpRequestHeaders.Authorizationヘッダー)。そこから、値をチェックする必要があります。有効な場合は、メソッドが戻ります。それ以外の場合、メソッドはactionContext.Responseオブジェクトを割り当て、「失敗した承認」応答が返されます。 –

関連する問題