エンジニアBLOG

2023/02/03

SAML認証とユーザー情報の受け渡し

SAML認証とは

こんにちは
入社3年目のカリヤです。
今回は、SAML認証のユーザー情報の受け渡しについて説明させていただきます。

SAML認証は、異なるサービスやアプリケーションの間でシングルサインオン(SSO)を
実現するための仕組みです。

具体的な例として、Twitterのログイン画面では、Twitterアカウントでログインする方法以外に、
Apple IDやGoogleアカウントを使用したログイン方法があります。
このログイン方法がSSOであり、SAML認証という仕組みでユーザーの認証をしています。

SAML認証では、サービスを提供する側(例ではTwitter)をサービスプロバイダ(SP)と呼び、
ユーザー名とパスワードなどの認証情報を保持している側(例ではAppleやGoogle)を
IDプロバイダ(IdP)と呼び分けます。

image

TwitterにおけるSSOの例

SSOが注目されている理由

近年、企業でSSOを導入する事例が増えており、その理由としてクラウドサービスの普及が挙げられます。
従来の方法で複数のクラウドサービスを利用する場合、サービスごとにアカウントの作成、
ユーザー情報の登録、認証方法の設定を行う必要がありました。

SSOを導入すると、IdP側でユーザー情報や認証方法の設定をまとめて管理できるため、
管理コストを削減できます。また、利用者は一度ログインするだけで複数のクラウドサービスを
利用できるため、利便性の向上にもつながります。

SAML認証のフロー

以下は、SP Initiated型のSAML認証のフローを示した図です。
SPとIdPは直接通信することはなくユーザーのブラウザがリダイレクトされることによりに認証が完了します。
SAML認証を行うには、あらかじめSPとIdPに対して互いの認証情報を登録する必要があります。

image

SP Initiated型のSAML認証のフロー

SAML認証によるユーザー情報の受け渡し

SAML認証の中で、IdPからSPに対して受け渡されるユーザー情報を確認します。
前述のとおり、SAML認証はユーザーのブラウザのリダイレクトを利用して認証を完了するため、
受け渡すユーザー情報もブラウザの開発者ツールで確認することができます。

ユーザー情報はSAMLレスポンス(図の⑤)に含まれるため、IdPとの認証後に発生する通信の中から「SAMLResponse=」から始まるペイロードが含まれる通信を探します。

image

SAMLレスポンスの内容

SAMLレスポンスはBase64でエンコードされているため、Google Admin ToolBoxを使用して
平文にデコードします。以下の画像は、デコード後に整形したものの一部です。

image

平文に戻したSAMLレスポンスを見ると、XML形式で情報を格納していることがわかります。
≪AttributeStatemen≫の中に、ユーザーの表示名や、IdPのテナントID、メールアドレスなどの
情報が含まれています。これにより、IdPからSPに対してユーザー情報の受け渡しを行うことができます。

SSOを設定する際に、SP側にユーザー情報が正しく受け渡されない場合、上記のようにSAMLレスポンスの
内容を確認することで、SPかIdPのどちらの設定不良かを切り分けることができます。

本記事は以上です。
閲覧いただきありがとうございました。

image