OpenID Connect
2023-03-23 (木) 20:59:52
OpenID Connect とは †
名称 †
- OIDC
概要 †
OIDCの仕様 †
ロール(登場人物) †
- エンドユーザ (User)
- リライングパーティ (RP)
- IdPの認証結果を受け取るアプリケーション
- 事前にIdPに登録する必要がある。
- IDプロバイダー (IdP)
- OpenIDプロバイダー (OP)
- IDトークンとアクセストークンを発行する
- UserInfoエンドポイント
- エンドユーザのプロフィール情報をRPに提供する
エンドポイント †
- 認可エンドポイント
- トークンエンドポイント
- リダイレクションエンドポイント
- ユーザーインフォエンドポイント
スコープ †
- UserInfoエンドポイントから取得する情報
- openid ※必須
- profile
- address
- phone
トークン †
- IDトークン
- アクセストークン
- 認可情報
- 認可コード
- リフレッシュトークン
フロー †
認可コードフロー †
- Authorization Code Flow
- OAuth2.0の認可コードグラント
- サーバサイドで認証
- コンフィデンシャルクライアント(RP)向け
インプリシットフロー †
- Implicit Flow
- OAuth2.0のインプリシットグラント
- パブリッククライアント向け
- クライアントサイドで認証
- リフレッシュトークンの発行が禁止されている
ハイブリッドフロー †
- Hybrid Flow
- 認可コードフローとインプリシットフローのハイブリッドなフロー
- サーバサイド・クライアントサイドの両方で認証
OIDCの仕様・プロトコル †
- OpenID Foundation 標準
- ※元々は以下の部分規格に分かれていた。
- OpenID Connect Core
- OpenID Connect Discovery
- OpenID Connect Dynamic Registration
- OAuth 2.0 Multiple Response Type Encoding Practices
- ※策定中の規格
- OpenID 2.0 to Connect Migration
- OpenID Form POST binding
- OpenID Connect Session Management
- ※関連する別規格(IETF OAuth WG)
- ※関連する別規格(IETF JOSE WG)
- JSON Web Signature(JWS)
- JSON Web Encryption(JWE)
- JSON Web Algorithms(JWA)
- JSON Web Key(JWK)
- ※関連する別規格(IETF Apps WG)
セキュリティ上の脅威 †
IDトークンの不正利用 †
使うもの †
- nonce を使う
- nonce
- number used once
- ランダムな文字列
- クライアント側で生成してセッションと紐づけて管理する
- nonce の値は一度切りしか使わないことが前提
フロー †
- クライアント(スマホアプリ等)がIDプロバイダに送る認証リクエストにnonce を追加する
- IDプロバイダはnonce を保存する
- IDプロバイダがクライアントに送るトークンレスポンスにnonce を追加する
- クライアントからIDプロバイダへのトークンリクエストの認可コードを元にIDトークンにnonce を設定する
- クライアントは受信したnonce を検証する
- 受信したnonce と保存していたnonce が一致しているか確認する
- 正規のユーザの認可コードに紐づくnonce と攻撃者の認可コードに紐づくnonce が異なるので検知できる
OIDCの実装 †
Webサービス †
- Microsoft
- Salesforce
- Mixi
- Yahoo!Japan
OSS †
関連サイト †
- OpenID Foundation Japan 公式サイト
http://openid.ne.jp/
- OpenID Foundation 公式サイト(英語)
https://openid.net/
http://openid.net/connect/
- OpenID Connect Core 1.0 ドキュメント(最終版:英語)
http://openid.net/specs/openid-connect-core-1_0.html
- OpenID Connect Dynamic Client Registration 1.0 incorporating errata set 1
https://openid.net/specs/openid-connect-registration-1_0.html
- OpenID Connect Discovery 1.0 incorporating errata set 1
https://openid.net/specs/openid-connect-discovery-1_0.html
- OpenID Connect入門 (Yahoo!デベロッパーネットワーク)
https://www.slideshare.net/techblogyahoo/openid-connect-openid-technight-133177834
- Google Identity Platform >OpenID Connect (Google)
https://developers.google.com/identity/protocols/OpenIDConnect
関連用語 †
- 統合認証
- プライバシーバイデザイン
- CIBA -Client Initiated Backchannel Authentication
- CSRF
- Financial API
- ID連携(フェデレーション)
- JSON
- OAuth
- OpenID
- REST
- SAML
- SCIM
- Self Issued IdP