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 は、SAML2.0に対応しています。2008年からSSOサービスを提供しており、多くのクラウドサービスと連携をして実績を重ねてきました。 多段階・多要素認証だけでなく、パスワードを必要としないFIDO2認証やスマートフォンの生体認証も利用できます。
SAMLの認証フロー「IdP-initiated SSO」と「SP-initiated SSO」
CloudGate UNO がSPとSAML連携を行った場合どのようなフローでサインオンが行われるのか、その過程を各ステップごとに解説します。
CloudGate UNO が対応するSAMLの認証フローには「IdP-initiated SSO」と「SP-initiated SSO」の2種類があります。 「IdP-initiated SSO」はユーザーがIdPへアクセスをしてSAMLの処理を開始した場合のフローで、 「SP-initiated SSO」はユーザーがSPへアクセスをしてSAMLの処理を開始した場合のフローです。
CloudGate UNO 側からサインオンを試みた場合の認証フロー(IdP-initiated SSO)

- ユーザーが CloudGate UNO のサインオン画面へアクセスします
- CloudGate UNO からユーザー認証を開始します
- ユーザーは認証情報を入力します
- CloudGate UNO で認証後、ユーザーはどのSPへアクセスするか選択をします
- CloudGate UNO は、アサーションを作成しデジタル署名をしてからユーザーのブラウザーを介しSPへ送ります
- SPはアサーションを検証し問題がなければユーザーへサインオンを許可します
SPからサインオンを試みた場合の認証フロー(SP-initiated SSO)

- ユーザーがSPへアクセスします
- SPからユーザーのブラウザーを介して CloudGate UNO へ認証申請が送られます
- CloudGate UNO からユーザー認証を開始します
- ユーザーは認証情報を入力します
- CloudGate UNO はユーザー認証を行い、アサーションを作成しデジタル署名をしてユーザーのブラウザーを介しSPへ送ります
- SPはアサーションを検証し問題がなければユーザーへサインオンを許可します
補足として
※ CloudGate UNO の「IdP-initiated SSO」と「SP-initiated SSO」の設定はSP側の対応状況により有効にすることができます。
※ SAMLには認証情報をプロトコルにのせてどのように送信するかを規定したバインディングがいくつか用意されています。
主なものは、
- HTTP Redirect Binding :URLに含めブラウザーを介する
- HTTP POST Binding :HTMLに含めブラウザーを介する
- HTTP Artifact Binding :SPとIdPが直接通信する
があり、 CloudGate UNO は「HTTP Redirect Binding」と「HTTP POST Binding」に対応しています。 但し、SP側の仕様により利用するバインディングが異なりますので、連携の際は確認が必要となります。 また、バインディング固有のフィールドを使用したRelayStateを利用すると、サインオンした直後に展開されるページのURLが指定できます。