web-dev-qa-db-ja.com

ADFSと証明書利用者のトークン署名証明書

ADFS 2.0/3.0での証明書利用者のトークン署名証明書の機能については、まだ十分に理解していません。自動自己署名証明書のロールオーバーが(デフォルトで)発生すると、新しいトークン署名証明書を(通常は)外部SSOアプリケーションプロバイダーに手動で配信して、新しい証明書を配置する必要があるシナリオがあります。 SSOが機能し続けるようにそれらの終わり。

ただし、これはcanが自動的に発生します。私が見つけた最高のものはここで説明されています:

AD FS and self-signed Token-Signing certificates | Kloud Blog

[ADFS] ...有効期限が切れる前に自己署名証明書を自動的に更新できます。証明書の信頼関係が自動フェデレーションメタデータ更新用に構成されている場合、自動的に提供されます依存パーティへの新しい公開鍵。この自動化により、サービスで使用されるキー証明書に定期的な注意を払う必要がないという点で、回復力があり、メンテナンスの少ないフェデレーションサービスが実現します。

質問は;証明書利用者の信頼がフェデレーションメタデータの自動更新用に構成されているかどうかを確認するにはどうすればよいですか?これは単純で信頼できる設定です(Google画像検索に感謝します)。

properties screenshot

もしそうなら、どうすれば更新が成功し(おそらく「最後にチェックされた」日付以外)、証明書利用者が自動的に新しい証明書またはその公開キーを取得したことを確認できますか?

3
lapingultah

SAML2およびWSフェデレーションの信頼にはいくつかの証明書があります。ここでは、サーバーのhttps URLのTLS証明書は無視します(ADFSはこれを通信証明書と呼んでいます)。

各当事者は署名証明書を持つことができます。パーティが送信するメッセージは、その証明書の秘密鍵で署名されています。 SAML2パーティーは、多くの場合、要求と応答の両方に署名します。 WS-フェデレーションパッシブはリクエストに署名しません(したがって、パッシブRPにはリクエストがありません)。署名証明書はメタデータで公開されます。ロールオーバー中には2つ(古いものと新しいもの)があります。

各当事者は暗号化証明書を持つことができます。要求または応答が暗号化証明書を持つ当事者に送信されると、その証明書の公開鍵を使用して暗号化鍵を暗号化できます。ターゲット以外のすべての人がメッセージを読めなくする。暗号化証明書はメタデータで公開されます。ほとんどの場合、メタデータで公開される暗号化証明書は1つだけです。ただし、ロールオーバーをシームレスにするために、古い証明書はしばらくの間受け入れられます。

ADFSの自動ロールオーバーは便利です。そのままにしておくか、有効期間10年の自己署名証明書に置き換えることをお勧めします。 ADFSにメタデータのURLがある場合、ADFSはパートナーが公開したメタデータに従います。

WS-Fedの土地の依拠当事者は、Microsoft .NET(WIFとも呼ばれます)アプリケーションをお読みください。それはアプリケーションに依存します。アプリケーションは、メタデータを公開できます。これは、ADFS管理者にとってうれしいことです。多くのタイプを入力する必要がなく、帯域外の通信ミスなどが少ないためです。すべての人にとってメリットがあります。したがって、すべてのアプリケーションはそのメタデータを公開する必要があります。誰にとっても良い。ただし、受動的なWS-Fedの証明書利用者には、署名証明書はありません。暗号化証明書がある可能性があります。 .NETには、System.IdentityModel.Metadataの「要求ごと」のメタデータを読み取って生成するクラスがあります。インターネット上にいくつかのサンプルがあります。それらの1つの例は、Thinktecture IdentityServerです。

証明書利用者はADFSメタデータを読み取ることができます。常にスケジュールされたタスクが利用可能でした。 ADFSメタデータを読み取ってから、アプリケーションのweb.configファイルを更新しました。 (変更がなかったとしても)プールのリサイクルの副作用があり、古いバージョンのweb.configでディレクトリを破壊するため、私はそれを使用しませんでした。リーダーまたはライターのコーディングに問題がある場合は、オフラインで私に連絡してください。これは、どのアプリでも実行できます(SharePointの場合も)。それはコストの問題であり、手動で(1年に1回)行うか、自動的に行うコードを記述します。

4
paullem

応答側がAD FS=サービスを使用している間は、応答側アプリケーションの動作を制御することはできません。サービスのダウンタイムを短縮するには、応答側アプリケーションと連携する必要があります。

http://www.maplelanetechnologies.com/Blog/Post/6/ADFS-3-0--Token-Signing-Certificate-Renewal-and-Service-Downtime

1
MapleLane

これはcanが自動的に行われます。

それだけではなく、自動的に実行されます!証明書はX日ごとに自動的に更新されます。Xはプロパティ "CertificateRolloverInterval"(または "CertificateDuration"の値)の値です。間違いなく、Get-ADFSPropertiesを実行して取得します。

証明書利用者の信頼が自動フェデレーションメタデータ更新用に構成されているかどうかを確認するにはどうすればよいですか?

わかりません...これはnotがADFSサーバーによって制御されています。メタデータを定期的にチェックするかどうかを決定するのは、相手側です。まあ、明らかに証明書を変更してSSOが壊れた場合は、相手がADFSを確認していないことがわかります...

あなたの印刷画面は反対を示しています。つまり、あなたが相手のメタデータをチェックしていることを示しています。この印刷画面をパートナーに送信すると、パートナーは「安全に」証明書を変更できることを知っています。

最後の注意:私の経験から、この「自動更新」機能が組み込まれている唯一のアプリケーションはADFS自体です。 SharepointやDynamics CRMにもそれはありません。だから私はそれはかなり役に立たないと思います。

結論として、私の提案はADFSの "AutoCertificateRollover"プロパティを無効にし、自分で証明書を管理することです。利点は、選択した有効期限で希望の証明書を使用できることです(TEST環境の場合、50年後に有効期限を設定すると非常に便利です)。カレンダーに、証明書の有効期限が近づいたときに信頼を更新するための大きなリマインダーを書いてください!

0
Matthieu