認証認可について理解が浅い部分を調べてメモしました。
- 認証認可周りの話で名前が似ていたり仕組みが複雑で混乱しやすい印象
- 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)
SSO(Single Sign-On)
- 仕組みの名前ではなく「一度ログインしたら複数のサービスをシームレスに使える」ことを指す
- 実現方法としてSAMLやOIDCが使われる