シングルサインオン
1 回の認証で複数のアプリケーションやサービスにアクセスできる仕組み
シングルサインオンとは
シングルサインオン (Single Sign-On, SSO) は、ユーザーが 1 回の認証で複数のアプリケーションやサービスにアクセスできる仕組みである。企業環境では、メール、チャット、CRM、経費精算、Wiki など数十のアプリケーションに個別のパスワードでログインする代わりに、1 回のログインですべてにアクセスできる。
SSO の認証フロー
SSO の認証フローを図で示す。
1. ユーザーがアプリ A にアクセス
2. アプリ A が IdP (Identity Provider) にリダイレクト
3. ユーザーが IdP でログイン (ID/パスワード + MFA)
4. IdP がトークン (SAML アサーション or JWT) を発行
5. アプリ A がトークンを検証し、ログイン完了
6. ユーザーがアプリ B にアクセス
7. アプリ B が IdP にリダイレクト
8. IdP はすでにセッションがあるため、再認証なしでトークンを発行
9. アプリ B がトークンを検証し、ログイン完了 (パスワード入力なし)
メリット
- ユーザー体験: パスワードの記憶・入力の負担が減る
- セキュリティ: パスワードの使い回しが減り、MFA を一元的に適用できる
- 管理効率: 退職時に IdP のアカウントを無効化するだけで全サービスへのアクセスを遮断
- コンプライアンス: 認証ログを一元管理でき、監査が容易
実装プロトコル
実装プロトコルを以下にまとめる。
| プロトコル | 形式 | 用途 |
|---|---|---|
| SAML 2.0 | XML ベース | エンタープライズ (Okta, Azure AD) |
| OpenID Connect | JSON/JWT ベース | Web/モバイルアプリ |
| Kerberos | チケットベース | Windows Active Directory |
SAML 2.0 はエンタープライズ環境で最も広く使われている。OpenID Connect は OAuth 2.0 の上に認証レイヤーを追加したもので、実装が容易だ。
AWS IAM Identity Center
AWS IAM Identity Center (旧 AWS SSO) は、AWS アカウントと SAML 対応アプリケーションへの SSO を提供する。
[ユーザー] → [IAM Identity Center] → AWS アカウント A (管理者ロール)
→ AWS アカウント B (開発者ロール)
→ Slack (SAML)
→ GitHub (SAML)
- Active Directory や外部 IdP (Okta, Azure AD) と連携
- AWS マネジメントコンソールと CLI (
aws sso login) の両方に対応 - アカウントごとに異なる権限セット (Permission Set) を割り当て
Cognito での SSO
自社アプリケーションに SSO を実装する場合、Cognito User Pool をフェデレーション IdP として使える。Google、Apple、Facebook のソーシャルログインや、企業の SAML IdP と連携する。
よくある落とし穴
セッション管理の不整合
SSO でログインしたユーザーが 1 つのアプリからログアウトしても、他のアプリのセッションが残る。シングルログアウト (SLO) を実装しないと、セキュリティリスクになる。
IdP の単一障害点
IdP がダウンすると、全アプリケーションにログインできなくなる。IdP の高可用性設計が重要だ。
体系的に学ぶなら関連書籍を参照してほしい。
この記事は役に立ちましたか?
関連用語
SAML
企業の ID プロバイダーとサービスプロバイダー間でシングルサインオンを実現する XML ベースの認証プロトコル
OpenID Connect
OAuth 2.0 の上に構築された認証レイヤーで、ユーザーの身元情報を ID トークンとして提供する
Amazon Cognito
Web・モバイルアプリに認証・認可機能を追加する AWS マネージドサービス
Passkey
パスワード不要の認証技術で、FIDO2/WebAuthn 標準に基づく
多要素認証
パスワードに加えて追加の認証要素を要求し、アカウントの不正アクセスを防ぐセキュリティ手法
IAM (概念)
Identity and Access Management の一般概念で、認証と認可を管理する仕組み