そのため、MVC Webサービスにアクセスする独自の認証(プレーヤーはエイリアスとパスワードを使用してログインし、データベースに対して検証する)を使用する既存のWindowsPhone7アプリがあります。
今、私はASP.NET Web APIに移行しようとしていますが、セキュリティを追加する方法について少し混乱していますか?
があるAuthorizeAttribute
ようですが、承認するにはどうすればよいですか?
ここでのガイダンスをいただければ幸いです。
そのため、MVC Webサービスにアクセスする独自の認証(プレーヤーはエイリアスとパスワードを使用してログインし、データベースに対して検証する)を使用する既存のWindowsPhone7アプリがあります。
今、私はASP.NET Web APIに移行しようとしていますが、セキュリティを追加する方法について少し混乱していますか?
があるAuthorizeAttribute
ようですが、承認するにはどうすればよいですか?
ここでのガイダンスをいただければ幸いです。
AuthorizeAttribute
Thread.CurrentPrincipal
指定されたリソース(この場合はコントローラーアクション)へのアクセスをユーザーが許可されているかどうかを確認するだけです。いかなる種類の認証メカニズムも提供しません。
あなたの場合、ユーザー名とパスワードが設定されているので、基本認証を行うことができます。これを行うのに最適な場所は、メッセージハンドラー内です。次に例を示します。BasicAuthenticationHandler
この実装の背後にテストがないため、これをそのまま使用することはお勧めしませんが、これでアイデアが得られるはずです。そのクラスは抽象クラスであり、メッセージハンドラーの基本クラスとしてこれを設定する場合は、AuthenticateUser
メソッドをオーバーライドしてを返す必要がありますIPrincipal
。戻り値がnullの場合、それはユーザーが認証されていないことを意味します。を指定するとIPrincipal
、それIPrincipal
が設定され、AuthorizeAttribute
それに対してチェックできます。
たとえば、GenericPrincipalクラスを使用してを作成できますIPrincipal
。ASP.NETホストを使用している場合、次のように認証ハンドラーを登録できます。
GlobalConfiguration.Configuration.MessageHandlers.Add(new MyAuthHandler());
要約すると、使用する認証の種類(基本認証、OAuthなど)に関係なく、メッセージハンドラーを介して認証を実行します。次に、を介して認証を行いAuthorizeAttribute
ます。
また、Dominick Baierは、ASP.NET Web APIの保護に関する優れたプレゼンテーションを行っているので、それを確認することをお勧めします。
多分これはあなたを助けるでしょう:WebAPIコントローラーのためのカスタムAuthorizeAttribute