ゆるテックノート

SAMLとは?

SAML(Security Assertion Markup Language)は、Webアプリケーションなどでシングルサインオン(SSO)を実現するためのXMLベースの標準プロトコルです。このドキュメントではSAMLの通信の流れや仕組みをざっくり理解できるようにまとめています。

🔐 SAMLの概要

SAMLは、ユーザーの認証情報を「アサーション」という形式で安全にやり取りすることで、複数のサービス間でのログイン連携(シングルサインオン)を実現します。

主要な構成要素

  • 📌 IdP(Identity Provider):ユーザー認証を行う側。ログイン処理を担当します。
  • 📌 SP(Service Provider):利用されるWebサービス側。IdPの認証結果を受け取ります。
  • 📌 アサーション:ユーザーの認証結果などをXMLで表現したデータ構造。

🔁 SAMLの通信の流れ

SAMLでは、ブラウザを経由してSPとIdPがSAMLRequest/SAMLResponseをやり取りし、ユーザーの認証が完了します。

主なステップ

  • ➡️ ユーザーがSP(例:社内ポータル)にアクセス
  • ➡️ SPがSAMLRequestを生成し、ユーザーをIdPにリダイレクト
  • ➡️ ユーザーがIdPで認証(ログイン)
  • ➡️ IdPがSAMLResponseを生成し、ブラウザ経由でSPに戻す
  • ➡️ SPがSAMLResponseを検証し、ユーザーをログイン状態に

📨 SAMLRequestとSAMLResponse

SAMLでは、リクエストとレスポンスがどちらもBase64でエンコードされたXMLでやり取りされます。

形式の特徴

  • 🔍 SAMLRequest:SPからIdPに送られる認証要求。HTTP-RedirectやPOSTで送信。
  • 🔍 SAMLResponse:IdPからSPに返される認証結果。署名付きで改ざん検出をサポート。
  • 🔍 Base64でエンコードされたXMLとして送られる。

🌐 SAMLが使われる場面

利用例

  • 社内システムとクラウドサービスのシングルサインオン連携
  • Google WorkspaceやMicrosoft 365と外部アプリの連携
  • 複数のサービス間でログイン状態を共有したい場合