saml-2.0 チュートリアル
saml-2.0を使い始める
サーチ…
備考
SAML2.0は、サービスプロバイダとIDプロバイダとの間で認証および認可データを転送するために使用されるオープンスタンダードです。
最も一般的な使用法はWebベースのSSOです。ここでSAMLは、認証中に2つのシステムを直接接続する必要なく、別のシステムからの資格情報を持つアプリケーションにログインできるようにしたものです。
SAML2.0認証フロー
SAMLは3つの重要な役割を指定します。
アイデンティティプロバイダ(IdP)
ユーザーの身元を提供し、維持する当事者。これは、ADFSやカスタムデータベースソリューションなどのディレクトリサービスにすることができます。
サービスプロバイダ(SP)
サービスプロバイダは、ユーザがログインしようとしている実際のサービスです。これは、Webサイト、アプリケーション、またはユーザーがログインする必要がある任意のサービスです。
プリンシパル/ユーザー
要求を開始した実際のユーザー、またはサービスプロバイダ (SP)からリソースにアクセスしようとしているユーザー。
メインのSAMLユースケースはWebベースのSSOで、SAMLプロセスはユーザーのブラウザ内のリダイレクトセットによって実行され、ユーザーはIdPとSPの間のトークンキャリアとして機能します。
SAMLを使用するWebベースのSSOには2つのフローがあります。
アイデンティティプロバイダ(IdP)の開始
ユーザはIdPにログインし、選択したSPに転送されます。例えば、ユーザが企業イントラネットにログインし、使用可能なすべてのアプリケーションが表示されます。
サービスプロバイダ(SP)が開始
ユーザーはアプリケーションにログインしようとしますが、IdPに転送されて実際の認証が実行されます。たとえば、ユーザーがリモートのSaaSアプリケーションにログインしようとすると、会社のIdPに転送され、企業の資格情報でリモートアプリケーションにログインできるようになります。
SP開始フローは、以下のワークフローによって大きく可視化されます。
出典: ウィキペディア
- ユーザーが特定のアプリケーションまたはWebページ上のリソースにアクセスしようとする
- ユーザーは、外部IdPを使用してログインしようとします。 SPはSAMLアサーションを生成し、これを(通常はPOSTまたはGET変数を介して)渡し、IdPに転送します
- ユーザーはIdPに対して自分自身を認証します
- 署名されたアサーションとトークンは、IdPによって生成されます
- 署名されたアサーションおよびトークンは、SPに(POSTまたはGET変数を使用して)戻され、成功した場合、セッションはSP上で開始されます
- さらに 、SPとのアクティブなセッション(クッキーによる)がある間に、ユーザがSPからさらなるリソースを要求できるため、すべての要求でIdPで認証する必要はありません。
SAMLデバッグツール
すべてのリクエストとアサーションが前後するため、SAMLの主張とアサーションに関する問題をデバッグするのは面倒です。
SAML内では、IdPとSPの間に直接接続を必要としないという基本原則があるため、ユーザーのブラウザは2つの間のメッセージキャリアとして機能します。このため、すべての通信は暗号化されていますが、自分のブラウザを経由します。
さまざまなデバッグツールを使用すると、IdPとSPの間で正確な通信と要求が行われ、転送されます。
まず始めに、さまざまなブラウザのためのいくつかのツールを紹介します。
クロム
Firefox
例えばSAML Tracerを使用すると、テストやデバッグ中にデコードされたSAMLアサーションとリクエストをリアルタイムで見ることができます