→認証技術
→SSO関連 ←SAML,Keycloakについてはこちら
サブトピック†
OpenID Connect†
- OpenIDとOpenID Connectは別物なので注意、略す場合はOIDCと略すのが一般的
OpenID†
- OpenIDとは「異なるWebサービス間でユーザーの認証情報を受け渡す方法」を定義したプロトコル
OAuth†
- OAuthは認可の仕様であって認証の仕様ではない
- OAuth 2.0ではIDトークンは規定されていないので「誰についての認可コードなのか」はわからない(OAuth 2.0の外で認証は行う前提)
- 最近話題の API の認証ってなに? ~OAuth編~ 2021.9
- 2点の問題「セキュリティ問題」と「ユーザー制約問題」を解決
- セキュリティ問題:アプリケーションから別サイトのリソースへアクセスしたい場合、別サイトの認証情報をアプリケーション側へ共有する必要があった
- ユーザ制約問題:各アプリケーションからの要求に対して異なるアクセス制限を適用する事ができなかった
- OAuthによってこれらの問題が解決した
- OAuthで登場する概念の説明(ロール、トークン、エンドポイント) | bbh 2020.11
- ロール … OAuthにおける役割。リソースオーナー、クライアント、リソースサーバー、認可サーバーなど
- リソースオーナー … リソース(画像)の所有者であり、サードパーティ製のアプリの使用者
- クライアント … サード―パーティ製アプリ。サーバーサイド、ネイティブアプリかは問わない。
- リソースサーバー … リソースを提供するサーバー。この例だとGoogleDriveのデータがあるサーバー。
- 認可サーバー … クライアントの認可を行うサーバー。リソースサーバーと同じ組織が運営。(この例だとGoogle)
- トークン … 認可されたことを証明するもの
- OAuthについて
- OAuth は,第三者に対して,認証を要求するリソースへのアクセスを一時的に許可するためのプロトコルです.
OAuth認可フロー(OIDCでも共用)†
- RFC6749 に記載された4つの認可フロー
- 1. 認可コードフロー
- 2. インプリシットフロー(※通常使うべきではない)
- 3. リソースオーナー・パスワード・クレデンシャルズフロー(※通常使うべきではない)
- 4. クライアント・クレデンシャルズフロー(ユーザーが絡まないフロー。クライアントに対してアクセストークンを発行する)
- 5. リフレッシュトークンフロー(※期限が切れたトークンを更新するためのフロー)
リソースオーナー・パスワード・クレデンシャルズフロー†
JWT(JSON Web Token)†
参考資料†