認証認可について調べたメモ

認証認可について理解が浅い部分を調べてメモしました。

  • 認証認可周りの話で名前が似ていたり仕組みが複雑で混乱しやすい印象
  • OIDC、SAML、OAuth、SSOなどのキーワードがそれぞれ何を指していてどう関係しているのか整理したい

認証と認可の違い

  • 認証(Authentication): ユーザーが誰か確認
  • 認可(Authorization): ユーザーが何をして良いか確認

関連キーワードの整理

OAuth 2.0(Open Authorization)

  • 本来は認可のための仕組み
  • 「このアプリに、あなたのGoogleカレンダー情報を読み権限だけ与える」というった使い方
  • つまり「パスワードを渡さずに限られた権限を委譲する」仕組み

OpenID Connect(OIDC)

  • OAuth2.0をベースにした認証の仕組み
  • OAuthだけだと「誰かを特定する」には向かない
  • そこでOIDCが「ユーザー情報(IDトークン)」を標準化してログインに使えるようにした

SAML(Security Assertion Markup Language)

  • OIDCより前からある認証の仕組み
  • XMLベースで、企業内システムのシングルサインオン(SSO)によく使われる
  • 歴史は長いが、最近hOIDCに置き換わる場面も増えている

SSO(Single Sign-On)

  • 仕組みの名前ではなく「一度ログインしたら複数のサービスをシームレスに使える」ことを指す
  • 実現方法としてSAMLやOIDCが使われる

全体の繋がり

  • OAuth → 認可
  • OIDC → OAuthを拡張して認証に対応したもの
  • SAML → OIDC以前からある認証方式
  • SSO → OIDCやSAMLを使って実現される体験