SAMLとは、Security Assertion Markup Languageの略で、OASISによって策定された異なるインターネットドメイン間でユーザー認証を行うための認証情報の規格です。
SAMLによる認証フローは、SP-InitiatedとIDP-Initiatedの2種類があり、認証情報を提供する側をIdentity Provider(IdP)、認証情報を利用する側(にアプリケーションサービス側)をService Provider (SP)と呼びます。
アプリケーションサービスを提供するSP側がSAMLに対応していれば、IdPが提供する認証情報を利用しSAML認証によるSSOを実現できます。
① SP-Initiated
ユーザーがSPにアクセスすると、SPはそのリクエストをSAML認証要求と共に、IdPへとリダイレクトします。IdPはこの認証要求に基づき、ユーザーの認証処理を実行します。IdPでのユーザー認証が成功すると、IdPはSPに対して認証情報やユーザーの属性等の情報を発行します。これらの情報を「アサーション」といい、SPはこのアサーションを元に、アクセス制御を行います。
② IDP-Initiated
ユーザーは、最初にIdPにログイン(認証)し、次にSPのアクセスを要求します。IdPはSPにアクセスするための情報(SAMLアサーション)を 作成し、ユーザー(Webブラウザ)に渡します。ユーザー(Webブラウザ)は、受け取った情報をSPに渡します。SPは受け取った情報の内容を確認し、ユーザーにサービスの利用を許可(認可)します。