2011-09-04 12 views
7

IIS7でWCF Webサービスアプリケーションを構築し、テストしました。認証に関しては、Webサービスの操作にアクセスするコンシューマのSQL ServerホストIDとパスワード認証を実装する必要がありました。しかし私の会社のポリシーでは、SAMLをWebサービスに実装するように指示されていると言われました。つまり、Webサービス操作にアクセスするクライアントは、SAML 2.0を使用して認証する必要があります。私はSAMLに精通していませんが、私のWebサービス内でそれを実装する方法を知り、始めたいと思っています。 Web上の定義に基づいて、サービスプロバイダとアイデンティティプロバイダという2つの用語を聞いていますが、サービスプロバイダが自分のWebサービスであると仮定しています。アイデンティティプロバイダはユーザが認証される場所であり、アイデンティティプロバイダは自分のWebサービスにアサーションを提供し、次にクライアントがその操作にアクセスできるようにします。私は理論を理解していますが、実際の実装にどのように取り入れるべきかはわかりません。私のWebサービスにアクセスするクライアントは内部的ではない、つまり外部(エクストラネットクライアント)なので、この場合、アイデンティティプロバイダは何ですか、そして、Webサービスにコードを追加してサービスプロバイダにするにはどうすればいいですか?SAML認証をWCF Webサービスアプリケーションに統合する方法

あなたは私のジレンマを理解していただきたいと思います。誰かが私が取る必要があるアプローチを説明することができます。また、Webサービスの完成に役立つサンプルやチュートリアルもありがとうございます。

答えて

4

SAML 2.0は標準のWCFでは提供されていないと思います。 WCFを動作させるには、WCFとWIF(Windows ID Foundation)を組み合わせる必要があります。ここでは、WIFとWCFの使用方法とクレームベースの承認のvery complex exampleがあります。この例ではSAML 1.1を使用していますが、SAML 2.0で動作するように構成を変更するだけです。

問題は一般に、ユーザーがSTS(サービストークンサービス)に対して認証し、セキュリティトークン(SAMLトークンなど)を受け取るフェデレーション認証またはフェデレーションIDと呼ばれます。クライアントがセキュリティトークンを渡す実際のサービス(RPリレーパーティ)を呼び出します。だから何を作るつもりですか?会社のポリシーでSAMLの使用が必要な場合は、既にSTSがあり、SAMLトークンでクライアントを認証する必要があります。

+0

あなたは正しいです、我々はSTSを持っています。だから、samlトークンを使用してクライアントを認証するには、あなたが行く方法を提供していますか? – wcfvemi

2

2011年以降、クレーム対応WCFサービスのサポートは.NET 4.5のリリースでapparently improvedになりました。それは今までに変化した場合に、私はその記事からの情報をコピーしますが、この答えの時のように、プロセスは、のような単純なように見えた:あなたのWCFでWIFへの参照(Microsoft.IdentityModel.dll)を追加する

  1. サービスプロジェクト。これは.NET 4.5で提供されているので、NuGetパッケージが必要とは思われません。

  2. は自己ホスト要求に対応するサービスを作成するために、次のコードサンプルを使用します。

    するvarホスト=新しいのServiceHost(typeof演算(ClaimsAwareWebService)、新しいウリ( "myUriを")); FederatedServiceCredentials.ConfigureServiceHost(host);

    host.Open();

  3. federatedServiceHostConfigurationビヘイビアエクステンションを使用するようにWCFサービスを設定します。

関連する問題