ASP.NET と Flex で記述された Web ベースのアプリケーションを構築しています。私の最大の課題の 1 つは、柔軟で保守可能な方法でアプリケーションのセキュリティを実装することです。この課題は、さまざまなテクノロジーが関与する場合に複雑になります。私が持っているものを以下に説明しようとします。
Web サイトは次のように構成されています。
- /mydomain.com/
- ログイン.aspx
- Default.aspx (ホスト フレックス [.swf] アプリケーション)
- /管理/
- AddUsers.aspx
- AddRoles.aspx
- AddPermissions.aspx
- 等...
- /サービス/
- SecurityService.asmx
- MapService.asmx
- PhotoService.asmx
- 等...
現在、フォーム認証を使用して Web サイト上のリソースを保護しています。/Services/ フォルダーにないすべてのページ/リソースは、認証されたユーザーを必要とし、まだ認証されていない場合は Login.aspx にリダイレクトされます。.asmx ページは、認証されていないユーザーを許可します。これらのリソースを保護するために、SOAP メソッドで例外をスローします。これにより、私が認識している SOAP Web サービス クライアントでサポートされていない SOAP Web サービスのページをリダイレクトすることを回避できます。最後に、SecurityService.asmx には、何らかの理由で Cookie の有効期限が切れた場合に、Flex アプリケーションが Login.aspx ページにリダイレクトせずにログインできるようにする Login メソッドが含まれています。確立された Cookie は、Flex アプリケーションからの要求を含め、サーバーへのすべての要求と共に送信されるため、これはかなりうまく機能しているようです。
ただし、これは依然として、Web サービスを保護するための悪いアプローチのように感じられます。意図されていない目的でフォーム認証を使用しているように感じます。具体的には、次の点が懸念されます。
- このモデルは、サービスがコア Web サイトから分離されている場合には機能しません。これは新たに発見された要件であり、フォーム認証は、さらに多くの変更やトリックを行わなければ (まったく機能しないとしても) うまく機能しないと私は信じています。
- Flex 以外のクライアントは、サービスへのアクセスを必要とする場合があります。これらのクライアントの中には、Cookie を使用できないものもあります。もしそうなら、このモデルはすぐにバラバラになります。これは当面の要件ではありませんが、長期的な目標の 1 つであることがわかっています。
- 最終的には (願わくば遅かれ早かれ) REST ベースのアーキテクチャ (対 SOAP) に移行する予定なので、どのソリューションも SOAP と REST で機能する必要があります。
それで、私の質問はです。
ASP.NET、Flex、および SOAP または REST Web サービス上に構築されたアプリケーションを保護するための最適な認証および承認メカニズムは何ですか?
注: 私は積極的に OAuth を検討しています。ただし、学習する完全な例を見つけるのに苦労しています。さらに、ユーザーが持っているアクセス許可に基づいて、特定のユーザーに対して返されたデータをフィルター処理できる必要があります。OAuth はトークンからユーザーの ID を削除するようです。そのため、きめ細かいセキュリティ モデルで OAuth がどのように適用されるかはわかりません。