5

ASP.NET ページと Flash アプレットの両方を含む Web サイトを作成しています。2 つのエンドポイントを介して公開される WCF サービスにビジネス ロジックをカプセル化したいと考えています。1 つは HTTP(S) を介してインターネット経由でアクセス可能で、Flash クライアントで使用でき、もう 1 つはアプリケーション サーバーで使用するためにデータ センター内でアクセスできます。 . これが良いアプローチとは思えない場合は、ここでやめてください。それ以外の場合は、先に進みます...

問題は、Flash クライアントからのリクエストをどのように認証するかです。ユーザーのパスワードをブラウザの Cookie に保存したくない、リクエストごとにパスワードを送信したくない、最初のログイン後に HTTPS を使用する必要がないため、トークンを使用する予定です。ベースの認証システム。また、ユーザーがサイト自体にログインした後に Flash クライアントにログインする必要がないようにしたいので、Javascript を使用して Flash クライアントの起動時にトークンを渡す予定です。

私は、WCF が .NET Framework の組み込みセキュリティ フレームワーク (System.Security) を使用してアクセス制御を実施することをサポートしていることを知っており、これを利用したいと考えています。

問題は、 Flash によって呼び出されたときにトークンを WCF サービスに渡す方法と、サーバーでトークンを処理する方法です。

  • WCF には「発行されたトークン」認証モードがありますが、これは Secure Token Service と SAML トークンを使用した本格的なフェデレーション シナリオで使用することを意図しているようです。このモードを独自の「単純なランダム文字列」トークンで使用することは可能ですか? もしそうなら、どのように?これは Flash と互換性がある必要があることに注意してください。
  • トークンをヘッダー (SOAP ヘッダーまたは HTTP ヘッダー) で渡す可能性があります。この場合、リクエストを行っているユーザーを特定したら、System.Security チェックが機能するようにフレームワークに通知するにはどうすればよいでしょうか?
  • 私が考慮すべき別のアプローチはありますか?すべての要求でパスワードを送信することを回避し、System.Security を使用できるようにし、Flash で動作するものは何でも可能です。
4

1 に答える 1

2

元の質問には回答済みのように見えるので、これは簡潔にしますが、1 つのアプローチは、認証トークンを http ヘッダーで渡し、CheckAccess(OperationContext operationContext, ref Message message)カスタム .xml でオーバーライドすることServiceAuthorizationManagerです。

を実装するカスタム ポリシーを使用するように、サービスを事前に構成しますIAuthorizationPolicy

あとは、承認状態を格納する単純なクラスをIIdentity実装するだけです。IPrincipal

この件に関しては、多くの優れた記事があります。

http://msdn.microsoft.com/en-us/library/system.identitymodel.policy.iauthorizationpolicy.aspx

http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceauthorizationmanager.aspx

これはまだ「独自の」ソリューションのように感じるかもしれませんが、確立されたパターンに従っている場合は、少なくとも安心できます. サービスメソッドから認証コードをブラックボックス化できるという利点があります。

于 2011-03-31T17:42:48.750 に答える