web-dev-qa-db-ja.com

ASP.NET MVC 4サービスプロバイダーにSAMLP 2.0を実装するにはどうすればよいですか?

C#でMVC 4 Webアプリケーションを開発しており、既存のSAML 2.0 IDプロバイダーを使用してログインを処理したい。 HTTP POST binding with SimpleSAMLphp を使用しています。

.NET 4.5では、Windows Identity Foundationを使用する必要があるようです。最初に、 Identity and Access Tool をインストールしようとしました。 (私はこのツールを統合することになっているVisual Studio 2013を使用していますが、VS2013のバージョン 「再入可能」をサポートしません 、つまり、それを使用してWIFサポートを追加することはできません既存のアプリケーション。)

IDおよびアクセスツールでIDプロバイダーのメタデータを指定すると、次のエラーメッセージが表示されます。

userSelection.SecurityTokenServiceMetadata.SecurityTokenServiceDescriptor

どうやら、これはSAMLP 2.0はWIFでサポートされていないを示すエラーメッセージです。これは、サポートされているSAML 2.0tokensとは異なるようです(少なくとも、この 古いドキュメントMicrosoft.IdentityModel.Tokens.Saml2名前空間があったことを示します)。

その後、SAML 2.0のWIF拡張を発見しました。ただし、これは2011年5月にリリースされたもので、それ以降は触れられていないようです。それにもかかわらず、私は拡張機能をダウンロードし、Zipファイルに含まれるSamlConfigToolをビルドしようとしました。このツールは、次のことを通知するコンソールアプリケーションです。

このツールは、証明書利用者を記述するメタデータファイルを作成するために必要な情報を要求します。パートナーメタデータファイルのアドレスをダウンロードするよう求められます。最後に、SAML保護を有効にするためにWebサイトのweb.configファイルに行う必要がある変更を含むChanges_To_Web_Config.xmlというファイルを出力します。

エンティティIDとSAMLエンドポイントを入力した後、SamlConfigToolが即座にクラッシュしました。さて、構成ツールを使用する必要はなく、サンプルのServiceProvider VSプロジェクトで行われたことをコピーするだけです。移行後、VS2012でプロジェクトを開くことができますが、どのように機能するかは明確ではありません。C#コードが含まれていないようで、Web.configの新しいエントリだけです。 MVC 4アプリのカスタムログインコードを置き換えるためにこの構成をどのように適合させるべきかは明確ではありません。また、いずれにしても3年前の死んだライブラリに依存することは良い考えではありません。

だから、ASP.NET MVC 4にSAML 2.0を実装する最良の方法は何ですか?現在、手作業でXMLをデコード、エンコード、解析、および圧縮していますが、もっと簡単な方法があるはずです。

20
sjy

そのWIF(_System.IdentityModel_でコア.NETに移動しました)では、SAML2トークンのみをサポートし、SAML2プロトコルは、サービスプロバイダーの実装に必要です。

Kentor.AuthServices はオープンソースですSP .NET 4.5の上に構築されたASP.NET MVCの実装。パッケージをインストールし、web.configにいくつかの設定を追加します-コーディングは不要です。

免責事項:私は_Kentor.AuthServices_の著者です

17
Anders Abel

私の知る限り、WIFでのSAML2Pのサポートはまだありません。自分で実装することをお勧めします。

SAML2Pを実装するライブラリを使用して、MVCプロジェクトで使用できます。使用できるライブラリの一部は OIOSAML.NET または商用 ComponentPro SAML です。

または、中間IAMを設定するオプションがあります。 MVCから、ws- *プロトコル(Visual Studioで実装される標準的な方法)を使用して、この中間IAMとしてideneityプロバイダーを設定します。このIAMは、SAML2Pで使用するIDPに認証メッセージを中継するように構成する必要があります。ユーザーを認証した後、IAMはクレームを変換し、MVCアプリケーションが信頼する新しいトークンを発行するだけです。 Shibboleth または ThinkTecture IdentityServer v2 を見てみてください(ただし、2番目はSAML2Pを実装しないため、サポートを自分で追加する必要があります)。または、ADFS2を使用できます。

3
pepo

http://www.nuget.org/packages/SAML2/ についてはどうですか? OIOSAML.NET からの分岐だと言っています。

2
Matt Kocaj

自分でライブラリを作成する場合を除き、ライブラリが必要です。私は https://www.nuget.org/packages/ITfoxtec.Saml2.Mvc で作業しています。

1
edson-