🔐

SSO(シングルサインオン)

2023/11/06に公開

なにか

一つのIDとパスワードの組み合わせで、複数のサービスにログインできる仕組み

ざっくり...

  1. IdP(アイデンティティプロバイダー)と呼ばれる認証サーバーにログイン情報を集約する
  2. 各サービスのログイン時にその情報を使用し検証することで、仕組みを可能にする
  • Oauth2.0
    • アクセストークンのみ発行
    • "同一クライアントを利用する別のユーザーである"ということを検証するには、拡張する必要がある
  • OIDC(Open ID Connect)
    • アクセストークン + IDトークンを発行(どれを発行するか指定できる)
    • "同一クライアントを利用する別のユーザーである"ということをIDトークンから検証できる

参考

種類(一部)

  • IDaaS(コスト△)
    • Okta
    • AWS Cognito(メインはCognitoだが、他の追加サービスも必要になる)
  • スクラッチ(コスト○)
    • KEYCLOAK

構成(例)

IdP(アイデンティティプロバイダー)サーバーを構築する(認証サーバー)

  1. クライアントがSP(サービスプロバイダー)にアクセスする
  2. 未ログイン(またはトークンの有効期間切れ)の場合は、IdPサーバーにリダイレクトする
  3. ログイン後、SPにリダイレクトする(この際に、アクセストークンとIDトークンを受け取る)
  4. IDトークン(アクセストークン)を使用し、SP側でログインされていることを検証する

Discussion