3

そのため、MVC Webサービスにアクセスする独自の認証(プレーヤーはエイリアスとパスワードを使用してログインし、データベースに対して検証する)を使用する既存のWindowsPhone7アプリがあります。

今、私はASP.NET Web APIに移行しようとしていますが、セキュリティを追加する方法について少し混乱していますか?

があるAuthorizeAttributeようですが、承認するにはどうすればよいですか?

ここでのガイダンスをいただければ幸いです。

4

2 に答える 2

5

AuthorizeAttributeThread.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の保護に関する優れたプレゼンテーションを行っているので、それを確認することをお勧めします。

于 2012-08-06T05:10:45.270 に答える
0

多分これはあなたを助けるでしょう:WebAPIコントローラーのためのカスタムAuthorizeAttribute

于 2014-04-19T14:47:06.063 に答える