SAML 認証を深く知る
Salesforce のシングルサインオンにおける SAML を理解する
認証の領域では、SAML(Security Assertion Markup Language)がアプリケーションをまたいだスムーズなアクセスを実現するうえで重要な役割を果たしています。SAML を深く掘り下げ、シングルサインオン(SSO)における重要性を理解し、Salesforce での実装を探っていきましょう。
前提を整理する
二つの Salesforce 組織があるシナリオを想像してください。ID プロバイダー(IDP)とサービスプロバイダーです。サービスプロバイダーにはアクセスしたいデータがありますが、複数の認証情報を使うのではなく、一組のログイン情報だけでそれを実現したい。考え方は単純ですが、裏側の仕組みは複雑なことがあります。

SAML の世界の重要用語
ユーザーのアクセス: ユーザーが認証前に、サービスプロバイダー上の保護されたリソースにアクセスしようとするとき。
リダイレクト:ユーザーが認証されていなければ、サービスプロバイダーは SAML リクエストを使ってユーザーを ID プロバイダーにリダイレクトします。必要に応じて、リレーステート(ユーザーが最初に訪れようとした URL)も一緒に送られます。
IDP による認証: ID プロバイダーが、通常はユーザー名、パスワード、多要素認証でユーザーの身元を確認します。
SAML アサーション: 認証後、IDP がサービスプロバイダーに SAML アサーションを送ります。
サービスプロバイダーの信頼: サービスプロバイダーが SAML アサーションを検証し、ユーザー情報を取り出してアクセスを許可します。先にリレーステートが渡されていれば、サービスプロバイダーはその URL に移動します。

シングルサインオンの利点
アクセスの簡素化: ユーザーは一組の認証情報だけで複数のサービスにアクセスできます。
セキュリティ:SAML はデジタル署名を使ってデータの完全性を保証し、改ざんを防ぎます。
相互運用性:標準プロトコルなので、SAML は異なる技術スタックのさまざまな IDP やサービスプロバイダーと連携できます。
さらに深く:SAML のフローを調べる
SAML リクエスト: サービスプロバイダーが IDP に送り、ユーザーの認証を依頼するものです。

SAML レスポンス: 認証後に IDP から送られるメッセージで、ユーザーの詳細を包んでいます。

アサーション:ユーザーについての IDP からの言明で、ユーザー名やメールアドレスなどの属性を含みます。
デジタル署名: アサーションを検証し、不正に改変されていないことを保証するために使われます。
リレーステート:認証後にユーザーが最初に意図した行き先に戻されるようにする、ディープリンクの URL です。
ユーザーがアクセスを始めると SAML リクエストが IDP に送られ、IDP は確認の後に SAML アサーションを返します。サービスプロバイダーがこのアサーションを検証すると、ユーザーは意図したアクセスを得られます。

ブラウザ用の SAML Tracer のようなツールを使えば、この流れを目に見える形にできます。最初のリクエストから認証後の最後のリダイレクトまで、認証プロセスを透明に見ることができます。
SAML アサーションのセキュリティ対策
想定されるセキュリティの脅威に対抗するために:
タイムスタンプを使ってリプレイ攻撃を防ぎ、SAML アサーションが短い時間だけ有効になるようにします。
デジタル署名が、やり取りの間にデータが改ざんされていないことを保証します。
さらに、アサーションにはメールアドレスやユーザー種別などのユーザー属性を含めることができ、サービスプロバイダー側でより細かなアクセス制御が可能になります。
まとめ
SAML の核心は、認証のための重要な要素を含む XML ベースのプロトコルです。魔法のように見えるかもしれませんが、「中間者」攻撃やリプレイのような攻撃を防ぐために練り上げられた技術の成果です。
さまざまな技術スタックの IDP と複数のサービスプロバイダーを統合できる力が、SAML をデジタル認証の世界の礎にしています。
お楽しみに
自信を持って Salesforce Identity の旅に出かけましょう! さらなる知見やヒントは、この www.SteveTechArc.com と YouTube チャンネル @SteveTechArc (opens in a new tab) で。チャンネル登録して、Salesforce Identity の理解を深めてください。
アーキテクト仲間やアーキテクトを目指す人たちと統合の知識を共有して、世界を変える手助けを!
STA 3.6