SAML(Security Assertion Markup Laungage)とは
インターネット上でユーザ認証と認可に関する情報を安全に交換するための標準的なプロトコル。
異なるドメイン間でも使用可能で、主にSSOに使用される。
XML(Extensible Markup Laungage)をベースとした言語で、ユーザの認証・認可を「アサーション」
として扱う。
アサーション(Assertion):認証の証明書。
IdpによりUserが認証したことを証明する。
SAMLの認証フロー
User:利用者、ブラウザ
IdP(IdentityProvider):認証情報を提供するシステム ex.)AzureAD,KeyCloak
SP(ServiceProvider):認証情報を利用するシステム ex.)BOX,Slack
SP起点での認証フローイメージが下記になる。
赤矢印の②がSAMLのRequestで、⑤,⑥がSAMLのResponseになる。

IdP起点での認証フローが下記になる。

代替技術
OIDC(OpenID Connect):OAuth2.0をベースとし、認証後にトークンを発行してユーザは
アクセスする。SAMLより新しく、今風。
KeyCloakとは
SSOや利用者情報とアクセス管理などを行うオープンソースプラットフォーム。
SAMLによるSSOが可能でOSSかつ拡張性も高いため、広く使われる。
習うより慣れよ ※詳細は省略
dockerでIdPとしてKeyCloak、SPとしてサンプルアプリを起動する。
Idp側にSPの設定、SP側にIdPの設定を行なうことでSPログイン時に、
IdPにログイン済の場合はSSOされた。
所感
SAMLの設定とそれを使う部分で本来は試行錯誤するべきなのだが、
dockerで起動するだけで分かりやすいUIで設定を行なうだけでSSOが実現できた。
時間があればこの部分についてもやってみたいが、次はOIDCを学ぶ。

コメント