はじめに
具体的な実装方法や詳細な仕組みは記述していません。
SAMLやSSOの名前は聞いたことあるけど、どんなものなのかわからない人の足がかりになれば幸いです。
SAMLとは何か?
SAML(Security Assertion Markup Language) は、SSOやID連携で利用される認証情報の規格です。
簡単に言うと、SAMLは「ひとつのサーバーで認証されたユーザー情報を、他のサーバーと安全に共有するための仕組み」で、SSOを実現するための手段のひとつとしてSAMLがあります。
規格が存在することで、いろいろなサービス間とのやり取りが可能になる
他の認証規格との違い
SAMLと似たような技術として、以下のようなものもあります。
- OAuth:主にAPI認可に使用
- OpenID Connect:OAuth 2.0をベースとした認証プロトコル
これらの中でも、SAMLは企業内システムでの認証・認可において特に広く使われています。
SSOとは?
SSO(Single Sign-On) とは、一度のログインで利用したいサービスやシステム全てにログインできる便利な仕組みです。
従来のログイン方式の問題点
従来のシステムでは、以下のような問題がありました。
- システムやアプリケーションごとに異なるログインIDとパスワードが必要
- パスワード管理が煩雑になり、以下のリスクが発生
- 簡単なパスワードの設定
- 同じパスワードの使い回し
- 上記が原因のセキュリティ面での脆弱性
SSOを導入するメリット
SSOを導入することで、以下のメリットが得られます。
-
セキュリティの向上
- 複数のサービスにログインするためのIDとパスワードの組み合わせがひとつで済む
- 長く複雑なパスワードを設定しても負担にならない
-
利便性の向上
- ログイン時間の短縮
- パスワード入力の負担軽減
SSOのデメリット
一方で、以下のようなリスクも存在します。
- IDとパスワードの組み合わせが漏洩した場合、全てのシステムに不正ログインされるリスク
SAMLでSSOを実現するメリット
SAMLが他の認証プロトコルと比べて優れている点は、認証と認可の両方を行えることです。
認証と認可の違い
- 認証(Authentication):ユーザーが誰であるかを確認すること
- 認可(Authorization):ユーザーがどのリソースにアクセスできるかを決定すること
例えば、OAuthは主に認可のみを行いますが、SAMLは認証と認可の両方を包括的に処理できるため、企業内システムでのSSO実現において非常に効果的です。
まとめ
ポイント
- SAML(Security Assertion Markup Language) は、SSOやID連携で利用される認証情報の規格
- SSO(Single Sign-On) により、一度のログインで複数のシステムにアクセス可能
- 従来の個別認証と比べて、セキュリティ向上と利便性向上を両立
- SAMLは認証と認可の両方を処理できるため、企業システムに最適
今後の学習について
SAML認証について更に詳しく学びたい方は、以下の点についても調べてみても面白そうです。
- SAML認証の具体的なフロー
- IdP(Identity Provider)とSP(Service Provider)の役割
- SAML AssertionとSAML Responseの構造
- 実際の実装方法やライブラリの使用方法