web-dev-qa-db-ja.com

SAML 2.0を使用したC#でのシングルサインオンの実装

先週、私はSAML 2.0でシングルサインオンを使用するというトピックについて多くの調査を行いました。良い記事をたくさん見つけて、SSOのプロセスを詳細に理解していますが、.Net Framework4.5を使用してC#ソリューションに実装すると問題が発生します。

プロセスについての私の理解と、それを適用する方法について説明します。

  1. ユーザーは、サービスプロバイダー(SP)である当社のソフトウェアにアクセスします。クライアントのニーズに合わせてさまざまなインスタンスをトリミングしています。

  2. 電子メールアドレスを入力した後、彼は私たちのアイデンティティプロバイダー(IdP)にリダイレクトされるべきです。この時点で、ユーザーがまだIdPにログインしていないかどうかを確認するために、認証トークンを送信する必要があると思います。ユーザーがいる場合は、ユーザーをシステムにログインさせたいと思います。そうでない場合は、IdPにログインします。

  3. 彼が正常に認証された後、SAML応答トークンをWebサイトのURLに送り返します。
  4. トークンが最後に到着したら、それを復号化し、認証が正常に完了したら、ユーザーにサービスへのアクセスを許可する必要があります。

これまでのところ、SAMLリクエストを生成する実際のプロセスや、C#コード内のSAMLトークンを復号化する方法に関する適切なリソースは見つかりませんでした。

テストでは、IDPとしてADFS 2.0を使用しており、そこからSAML応答を取得しています。応答を処理するときに、データベース内の情報を応答内の電子メールと比較して、ユーザーをシステムに取り込む前にユーザーの詳細を確認します。

私が見つけた例は、時代遅れであるか、詳細な説明を提供していません。実装の例をいくつか提供するか、まだ見つけられていない優れた最新のリソースを提供することで、誰かが私に光を当てることができるとしたら。

4
mbajer92

SAMl 2.0は単純なプロトコルではなく、ご存知のとおり、独自のプロトコルを作成するのは簡単ではありません。

SAMLクライアント側スタックを使用します。

Microsoftからの公式のものはないことに注意してください。

いくつかのアイデアについては、 SAML:SAML接続/ツールキット を参照してください。

これはあなたのためにすべての重い持ち上げと配管を行います。

1
nzpcmad