Federated Sign-out¶
フェデレーション・サインアウトは、ユーザーが外部アイデンティティ・プロバイダを使用してIdentityServerにログインした後、ユーザーがIdentityServerに未知のワークフローを介してその外部アイデンティティ・プロバイダからログアウトする状況です。ユーザーがサインアウトすると、IdentityServerとIdentityServerを使用するすべてのアプリケーションからユーザーにサインインできるように、IdentityServerに通知すると便利です。
すべての外部IDプロバイダがフェデレーション・ログアウトをサポートしているわけではありませんが、ユーザーがログアウトしたことをクライアントに通知するメカニズムを提供します。この通知は通常<iframe>、外部IDプロバイダの「ログアウト」ページからのリクエストの形式で行われます。IdentityServerは次に、その外部のアイデンティティプロバイダの内部からの要求の形式で、すべてのクライアント(ここで説明したように)に通知する必要があります。<iframe><iframe>
フェデレーションによるサインアウトを特殊なケースにするのは、フェデレーションによるサインアウト要求がIdentityServerの通常のログアウトエンドポイントではないということです(通常のログアウトと比較した場合)。実際、各外部IdentityProviderは、IdentityServerホストとは異なるエンドポイントを持ちます。これは、各外部IDプロバイダが異なるプロトコルを使用し、各ミドルウェアが異なるエンドポイントでリッスンするという事実によるものです。
これらのすべての要因の正味の効果は、通常のサインアウトワークフローと同様にレンダリングされる「ログアウト」ページがないことです。つまり、IdentityServerのクライアントへのサインアウト通知が欠落しています。フェデレーション・ログアウトを達成するために必要な通知を表示するために、これらのフェデレーション・ログアウト・エンドポイントごとにコードを追加する必要があります。
幸い、IdentityServerにはすでにこのコードが含まれています。要求がIdentityServerに来て、外部認証プロバイダのハンドラを起動すると、これらは連合サインアウト要求であり、彼らがしている場合、それは自動的に同じをレンダリングする場合、IdentityServerは検出し<iframe>てサインアウトするために、ここで説明しました。簡単に言えば、連合サインアウトは自動的にサポートされています。