SAMLとは、Security Assertion Markup Languageの略称であり、利用者の認証や認可に関する情報を伝達するためのXMLベースのマークアップ言語の一つ。標準化団体のOASISによって2020年に策定され、2005年にはバージョン2.0となっています。
1回認証を通れば許可がされているすべてのサービスが使えるようになる仕組み(シングルサインオン)を実現するときに使われる仕組みのひとつです。
SAMLはユーザーの属性情報なども付与することができます。単純にユーザーの認証を行うだけでなく、ユーザーがクラウドサービス内のどの機能を許可するなどの認可も行えるプロトコルです。例えば、営業部や情報システム部といった属性情報をユーザー認証に付与することで、この機能は営業部にしか使わせないといったリソースへのアクセス制御が容易にできるようになります。
SAMLでは、認証情報を提供する側をIdentity Providerと呼びます。
SAMLでは、認証情報を利用する側をService Providerと呼びます。
フロー名 | フローの説明 |
---|---|
IdP-initiated SSO | ユーザーがIdPへアクセスをしてSAMLの処理を開始した場合のフロー |
SP-initiated SSO | ユーザーがSPへアクセスをしてSAMLの処理を開始した場合のフロー |
- ユーザーがIdPの Sign on 画面へアクセスします。
- IdPからユーザー認証を開始します。
- ユーザーは認証情報を入力します。
- IdPで認証後、ユーザーはどのSPへアクセスするか選択をします。
- IdPは、アサーションを作成しデジタル署名をしてからユーザーのブラウザを介してSPへ送ります。
- SPは、アサーションを検証し問題がなければユーザーへサインオンを許可します。
- ユーザーがSPへアクセスします。
- SPからユーザーのブラウザーを介してIdPへ認証申請が送られます。
- IdPからユーザー認証を開始します。
- ユーザーは認証情報を入力します。
- IdPはユーザー認証を行い、アサーションを作成しでデジタル署名をしてユーザーのブラウザーを介しSPへ送ります
- SPはアサーションを検証し問題がなければユーザーへサインオンを許可します
- HTTP Redirect Binding :URLに含めブラウザーを介する
- HTTP POST Binding :HTMLに含めブラウザーを介する
- HTTP Artifact Binding :SPとIdPが直接通信する