OpenID Connect とは†
- 略語は「OIDC」。
- 認証と認可と属性取得の技術で構成されている。
OIDCの仕様†
ロール(登場人物)†
- リライングパーティ (RP)
- IdPの認証結果を受け取るアプリケーション
- 事前にIdPに登録する必要がある。
- IDプロバイダー (IdP)
- OpenIDプロバイダー (OP)
- IDトークンとアクセストークンを発行する
エンドポイント†
- 認可エンドポイント
- トークンエンドポイント
- リダイレクションエンドポイント
- ユーザーインフォエンドポイント
スコープ†
- UserInfoエンドポイントから取得する情報
- openid ※必須
- profile
- email
- address
- phone
トークン†
- IDトークン
- IdPがRPに対して発行する
- RPはIDトークンを使ってエンドユーザを認証する
- トークンに含まれる情報:ユーザID、有効期限、発行者・受領者、トークンの形式・署名方法、署名
- トークンの形式:JWS(署名付きJWT)
フロー†
認可コードフロー†
- 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サービス†
- Google
- Microsoft
- Salesforce
- Mixi
- Yahoo!Japan
OSS†
関連サイト†
関連用語†