1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OpenID Connect

Last updated at Posted at 2020-12-06

#OpenID Connect
OpenID Connect Core 1.0のこと。

OAuth2.0を拡張したもの。OAuth2.0は認可のみの仕様であったため認証に関しては定義されていませんでした。

OpenID Connectは OAuth2.0をベースに認証部分の仕様を策定しました。

OAuth2.0は「RFC 6749」で定義されています。

RFC 6749: https://tools.ietf.org/html/rfc6749

OpenID Connectは RFCで定義されていないみたいですね。

仕様は以下。

OpenID Connect: http://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html#UserInfo

#目的
認証、認可、SSO(シングルサインオン)、ID連携

#概要
エンドユーザが IDプロバイダー上で認証を行い、生成された IDトークンをアプリ上で利用します。

アクセストークンも払い出しできます。

#用語

No 用語 説明
1 OpenID Provider(OP) IDトークン等をRP側に提供する
2 Relying Party(RP) IDトークン等をOP側に要求する
3 ID Token JSON形式の Web Token(JWT)、認証用のトークン
4 Access Token アクセストークン、認可用
5 UserInfo Endpoint Clientは Access Token を用いて UserInfo Endpoint にEnd-User の Claim を要求する
6 Claim IDトークンのユーザ属性情報
7 Issuer

#フロー

No Response_type Flow 備考
1 code Code flow
2 id_token Implicit flow
3 id_token token Hybrid flow
4 code id_token Hybrid flow
5 code token Hybrid flow
6 code id_token token Hybrid flow

#Implicit flow
主にスクリプト言語を用いて実装されブラウザ上で動作する Client によって使用される

Implicit flowの場合、Token Endpointは利用されない。すべて Authorization Endpointからトークンが返される。

response_typeに「id_token」が利用される場合は ID Tokenのみ返却される。Access Tokenは返却されない。

「3.2. Authentication using the Implicit Flow」

#response_type
“code”、”token”はOAuth2.0の仕様。”id_token”はOpenID Connectの仕様。id_tokenを指定した場合は、IDトーンのみ返却される。「response_type」の値で何を返却されるかがわかる。

#scope
OpenID Connectの場合、scopeに”openid”を含める必要がある。scopeに”openid”が無い場合は、OAuth2.0の動作となる。

OAuth2.0の場合は、アクセストークンのみでIDトークンは提供されない。

#ID token Validation
Clientは ID Token の署名を, JOSE Header 中の alg Header Parameter で指定されたアルゴリズムを使い, JWS [JWS] に従って検証しなければならない (MUST).

nonce Claim の値が Authentication Request にて送られたものと一致することを確認しなければならない (MUST). Clientは nonce の値をリプレイアタック対策のためにチェックすべきである (SHOULD). リプレイアタック検知方法の詳細はClientによって異なる.

#OP(OpenID provider)

  • OSS
  • OpenAM ・・・入手が少し面倒
  • KeyCloak
  • サービス
  • Yahoo
  • Google
  • AzureAD
  • Auth0

#RP(Relying Party)

  • 実装方法
  • Nodejs+express
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?