SAML【Security Assertion Markup Language】
SAMLとは?

SAMLを利用する環境では、認証を担う「IDプロバイダ」(IdP:Identity Provider)と、サービスを提供する「サービスプロバイダ」(SP:Service Provider)が連携する。利用者がSPにアクセスすると、認証はIdPに委ねられる。IdPが本人確認を行い、その結果をSPへ伝えることでログインが成立する仕組みである。パスワードなどの秘密の情報は利用者とIdPの間でやり取りされ、SPに伝わることはない。
IdPが発行する認証結果のデータは「アサーション」(assertion)と呼ばれ、XML形式で記述される。利用者の識別情報や認証時刻、認可された権限などが含まれ、電子署名や暗号化によって改竄やなりすましを防ぐ構造になっている。SPはアサーションを検証することで、認証を実施したIdPの結果を信頼できる根拠として扱える。
メッセージの交換手順としてSAMLプロトコルを定めているが、これをやり取りする下位の伝送手段については特に前提や制約は定めておらず、仕様上は何を用いても構わない。Web系のシステム間の連携に用いられることが多いため、実際にはHTTPやHTTPSによって通信を行うことが多い。
SAMLの主な用途は、企業が導入する複数のクラウドサービスを社内の認証基盤と連携させることである。例えば、社内の認証システムにサインインするだけで、グループウェアや顧客管理システム、ファイル共有などを追加認証なしに利用できる構成が実現できる。複数のSPが同じIdPを参照できるため、アカウントの追加や削除、権限変更を一元管理しやすく、管理者の運用負荷を抑えられる。
近年では、JSON形式をもとに策定された「JWT」(JSON Web Token)などのメッセージ標準を用いるOAuth 2.0やOpenID ConnectもモバイルアプリやAPIとの連携を中心に広く普及しているが、エンタープライズ向けのWebサービス間シングルサインオン環境では現在もSAMLが有力な選択肢であり続けている。