SAMLとは
SAMLとは、Security Assertion Markup Languageの略称で、異なるネットワーク間でユーザーの認証および認可情報をやり取りするための標準規格です。 XMLの国際標準化団体 OASISにより 2002年に策定されました。SAMLは XML形式でユーザーIDや認証情報を安全に伝えることができ、 属性情報などのユーザー情報も伝達することができます。それにより、セキュリティを維持しつつ柔軟なシステム連携を可能にし、シングルサインオン(SSO)を実現しています。
SAMLの仕組み
SAMLの仕組みについて解説していきます。まず、関連する主要な登場人物を確認しましょう。ユーザー、ユーザーの認証を行う IdP(アイデンティティプロバイダー)、 そして IdPが発行した認証情報に基づいてサービスを提供する SP(サービスプロバイダー)の3者が存在します。 CloudGate UNO を例にとると、 CloudGate UNO は IdPの役割を果たし、 CloudGate UNO に連携する各種サービスは SPに該当します。
IdP-initiated SSO
処理の流れにはいくつかのフローがありますが、ユーザー認証フローの1つである「IdP-initiated SSO」を例に説明をしていきます。 「IdP-initiated SSO」は、ユーザーが IdPのポータルサイトから利用可能なサービスを一覧で確認し、そこから特定の SPへ簡単にアクセスをする場合に使われるフローです。
具体的には、以下のステップで進行します。
- アクセススタート : ユーザーが IdPへアクセスを試みます。
- サインオン操作 : IdPはユーザーに対してサインオン操作を促します。
- 認証情報の入力 : ユーザーが認証情報を入力します。(例:IDとパスワードなど)
- SP選択画面の表示 : ユーザー認証に成功すると、IdPは SP選択画面を表示します。
- SPの選択 : ユーザーが IdPの SP選択画面で利用するサービスを選択します。
- SAMLレスポンス(リダイレクト) : IdPは SPへブラウザーを介して認証結果(アサーション)を送ります。
- サービススタート : SPは認証結果の検証を行い、ユーザーへサービスの提供を開始します。
ここまで説明してきた 「IdP-initiated SSO」は、 IdPを起点とするフロー(ユーザーが IdPから SPへアクセス)でしたが、 SAMLの認証フローにはもう1つ、SPを起点とするフロー(ユーザーが直接 SPへアクセス)の「SP-initiated SSO」があります。次からは「SP-initiated SSO」を例に解説していきます。
SP-initiated SSO
具体的には、以下のステップで進行します。
- アクセススタート : ユーザーが直接 SPへアクセスを試みます。
- SAMLリクエスト(リダイレクト) : SPはブラウザーを介してユーザー認証を IdPへ依頼します。
- サインオン操作 : IdPはユーザーに対してサインオン操作を促します。
- 認証情報の入力 : ユーザーが認証情報を入力します。(例:IDとパスワードなど)
- SAMLレスポンス(リダイレクト) : IdPは SPへブラウザーを介して認証結果(アサーション)を送ります。
- サービススタート : SPは認証結果の検証を行い、ユーザーへサービスの提供を開始します。
セキュリティポイント
ここでは、SAML認証フローにおいて特に重要なセキュリティポイントを2つに絞ってご説明します。
1つ目は、IdPがユーザー認証後に生成する認証情報「アサーション」に対するデジタル署名による改ざん防止です。 SPは、この署名を検証することで、受け取ったアサーションが信頼できる IdPによって発行されたものであり、改ざんされていないことを確認することができます。
2つ目は、通信経路の暗号化による盗聴防止です。IdPから SPへアサーションをはじめとする SAMLメッセージが送信される際には、 一般的に広く用いられている暗号化技術 TLS/ SSL(HTTPS)プロトコルが適用されます。これにより、第三者が通信を傍受しようと してもその内容を解読することは困難となり、ユーザーの識別情報や認証結果といった機密性の高い情報を安全にやり取りすることが可能となります。 さらに、SAMLの設計上、IdPから SPへパスワードなどのユーザー固有の認証情報が直接送られることはありません。
これらの仕組みが組み合わさることで、SAML認証フロー全体の安全性が高められています。
SAMLのメリット
SAMLの主なメリットは、シングルサインオン(SSO)の実現によるセキュリティ強化と利便性の向上です。ユーザーは、パスワードなどの認証情報を 複数のサービスで個別に管理する必要がなくなり、管理の手間は軽減され、パスワードの使いまわしや忘れのリスクを低減します。IdP(アイデンティティプロバイダー)である CloudGate UNO は多要素認証(MFA)やパスキー認証など高度な認証方式に対応しているため、より強固なセキュリティ対策が可能です。さらに、一元的なセキュリティ管理により柔軟で 迅速な対応も可能で、例えば、ユーザー認証履歴を通じて、見知らぬサインオンの発見やサインオン失敗時の原因などを確認することができます。もし問題が発生した場合 でも認証方式の変更や連携解除といった操作は容易なため、迅速な対応が可能です。
SAML証明書の更新
SAMLを利用する時には、事前に信頼関係を築く準備が必要です。IdP(アイデンティティプロバイダー)と SP(サービスプロバイダー)の両方で 秘密鍵と公開鍵のペアを作成し、公開鍵を収めた SAML証明書を発行・交換します。IdPの SAML証明書は、認証結果であるアサーションにデジタル署名を するために使われ、成りすましや改ざんを防止します。重要な注意点は、SAML証明書の有効期限です。有効期限が切れるとサービスが利用できなくなる可能性があるため、 管理者は有効期限前に新しい証明書を発行し、再度登録をする必要があります。SPによっては有効期限が切れた証明書でもサービスを利用できる場合がありますが、 安全性を保つためには期限内に新しい証明書に入れ替える方が良いでしょう。 CloudGate UNO では、 SAML証明書の発行 が比較的簡単に行えます。多くの SPとの連携を助けるため、証明書ファイルのダウンロードやメタデータURLのコピー、フィンガープリントなど の機能を提供しています。SAML証明書に関連する具体的な操作手順は SAML証明書を管理する をご確認ください。
補足として
※ CloudGate UNO の「IdP-initiated SSO」と「SP-initiated SSO」の設定は SP(サービスプロバイダー)の対応状況により有効にすることができます。
※ SAMLの仕様では、IdP(アイデンティティプロバイダー)と SPとの間で認証情報をどのように交換するかを定めた方式がいくつか用意されています。
- HTTP Redirect Binding: URLにクエリとして追加しブラウザーを介して渡す方法
- HTTP POST Binding: HTMLの一部に含めてブラウザーを介して渡す方法
- HTTP Artifact Binding: SPと IdPが直接通信する方法