SAMLとは
SAMLとは、Security Assertion Markup Languageの略称で、異なるネットワーク間でユーザーの認証および承認情報をやり取りするための標準規格です。 2002年、XMLの国際標準化団体 OASISにより策定されました。
SAMLを利用すると
SAMLを利用すると、Single Sign On(SSO)を実現することができます。 例えば、業務上複数のクラウドサービスにアクセスする必要がある場合、各サービスを利用するたびにそれぞれの認証情報が求められます。 SSOを利用すればその操作が不要となり、1回のサインオン操作で連携されているすべてのサービスへシームレスにアクセスできるようになります。 多様なクラウドサービスが増えるなか、SSOの需要が高まると共に SAMLに対応するクラウドサービスも増えてきています。
SAMLではユーザーの認証を行う側を Identity Provider (IdP)と呼び、IdPが作成した承認情報を利用する側を Service Provider (SP)と呼びます。 IdPはユーザーがサインオンする際、ユーザーの本人確認を行い承認ができればアサーションと呼ばれる承認情報を作成し SPへ送ります。 この時、SPの操作権限などに利用可能な属性情報も同時に送ることができます。アサーションを受け取った SPでは検証が行われ、 問題がなければユーザーへサインオンを許可します。IdPから SPへ送られるメッセージには、パスワードなどのユーザー固有の認証情報を含むことはありません。 また暗号化やデジタル署名を利用できるためより安全な通信を行うことができます。
CloudGate UNO を利用すると
CloudGate UNO は、SAML 2.0に対応しています。2008年から SSOサービスを提供しており、多くのクラウドサービスと連携をして実績を重ねてきました。 多段階・多要素認証だけでなく、パスワードを必要としないパスキー認証やスマートフォンの生体認証も利用できます。
SAMLの認証フロー
CloudGate UNO がSPと SAML連携を行った場合どのようなフローでサインオンが行われるのか、その過程を各ステップごとに解説します。
CloudGate UNO が対応する SAMLの認証フローには「IdP-initiated SSO」と「SP-initiated SSO」の2種類がありますが、 ここではユーザーが SPへアクセスをして SAMLの処理を開始した場合のフロー「SP-initiated SSO」を例に説明します。
- ユーザーが SPへアクセスします。
- SPから認証リクエストが送られます。
- 認証リクエストはユーザーのブラウザーを介して CloudGate UNO へ送られます。
- CloudGate UNO からユーザー認証を開始します。
- ユーザーは認証情報を入力します。
- CloudGate UNO は SAMLレスポンスにデジタル署名をして送ります。
- SAMLレスポンスはユーザーのブラウザーを介し SPへ送られます。
- SPは署名検証し SAMLレスポンスに問題がなければユーザーへサインオンを許可します。
SAML証明書の更新
SAMLを利用するには、信頼関係を構築するため事前に IdP側と SP側の両方で秘密鍵と公開鍵のペア、公開鍵を埋め込んだ SAML証明書を発行し、 双方で 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が直接通信する方法