[許可] OpenIDConnectプロトコルの使用を開始する

OpenIDConnectプロトコルの使用を開始する

1.はじめに

OpenID Connectは、OAuth2.0仕様に基づく相互運用可能な認証プロトコルです。以前の認証プロトコルと比較して、シンプルなREST / JSONメッセージフローを使用して実装するため、開発者は簡単に統合できます。
OpenID Connectを使用すると、開発者は、管理パスワードファイルがなくても、Webサイトやアプリケーション全体でユーザーを認証できます。OpenID Connectを使用すると、ブラウザーベースのJavaScriptやネイティブモバイルアプリケーションを含むすべてのタイプの顧客がログインフローを開始し、ログインしたユーザーのIDに関する検証可能なアサーションを受信できます。

2.基本

簡単に言うと、OIDCは、アプリケーションがID認証サーバーに接続してユーザー情報を取得し、この情報を安全で信頼できる方法でアプリケーションに返すためのセキュリティメカニズムです。
OpenIDプロトコルとOAuthプロトコルはしばしば一緒に言及されますが、2つの間に違いがあります。

  • OpenIDは認証です。これは、ユーザーのIDを認証し、そのIDが有効かどうかを判断することです。つまり、「あなたはあなたが主張するユーザーです」とWebサイトに通知します。
  • OAuthのは、承認される許可、である。ユーザの身元が法的であることが知られている場合は、ユーザーが特定の操作を可能にするために許可されている、それは「あなたがする許可されている」ウェブサイトを知ることができるように、されています。それができる
    ことがわかります認証は認証後に実行する必要があります。ユーザーIDを確認した後にのみ認証できます

認証+ OAuth2.0 = OpenID Connect

3、プロセス

OAuth2は、保護されたリソースへのアクセスをサードパーティクライアントに許可する問題を解決するためのアクセストークンを提供します。同様に、OIDCは、ユーザーを識別するサードパーティクライアントの問題を解決するためにこれに基づいてIDトークンを提供します。OIDCの中核は、OAuth2認証プロセスでサードパーティクライアントにユーザーID認証情報を提供することです。IDトークンはJWT形式でパッケージ化されています。JWTの自己完結型のコンパクトで改ざん防止メカニズムのおかげで、IDトークンサードパーティのクライアントプログラムに安全に渡して、簡単に検証できます。

OIDCはOAuthプロトコルプロセスに従っていることがわかります。Access-Tokenを申請すると、ユーザーIDを確認するためにID-Tokenも返されます。
ここに画像の説明を挿入

  1. クライアントは認証要求を認証サービスに送信します。
  2. エンドユーザーは、認証ページで承認確認を実行します(オプション)。
  3. 認証サービスは認証要求を検証し、IDトークンをクライアントに送信します。
  4. クライアントはサービスを要求し、その要求にはIDトークンが含まれます。
  5. ビジネスサービスは、IDトークンが有効かどうかを確認した後、ビジネス応答を返します

4つ、JWT(JSON Web Token)形式のデータ

認証サービスによって返されるIDトークンは、JWT(JSON Webトークン)の定義に厳密に準拠している必要があります。JWT(JSON Webトークン)の定義は次のとおりです。

1. iss:しなければなりません。認証サービスの一意の識別子である発行者識別子(大文字と小文字を区別するhttps URL)には、クエリコンポーネントとフラグメントコンポーネントは含まれていません。

2.サブ:必須。issによって提供されるエンドユーザーの識別子であるSubjectIdentifierは、issの範囲内で一意であり、最大255のASCII文字を使用でき、大文字と小文字が区別されます。

3. aud:必須です。IDトークンのオーディエンスを識別するオーディエンスには、大文字と小文字を区別する文字列配列であるOAuth2client_idが含まれている必要があります。

4. exp:しなければなりません。有効期限、この時間以降のIDトークンは無効になります。

5. iat:しなければなりません。JWTが構築された時点で発行されます。

6. auth_time:AuthenticationTime、エンドユーザーが認証を完了する時間。

7.ノンス:認証要求を送信するときに提供されるランダムな文字列。リプレイ攻撃を遅らせるために使用され、クライアントセッションを関連付けるためにも使用できます。ナンスが存在する場合、クライアントはナンスを検証する必要があります。

8. acr:オプション。認証コンテキストクラス参照は、認証コンテキスト参照値を表します。これは、認証コンテキストクラスを識別するために使用できます。

9. amr:オプション。認証方法の参照は、認証方法のセットを表します。

10. azp:オプション。audと組み合わせて使用​​される許可されたパーティ。この値は、認証されたパーティとオーディエンス(aud)に一貫性がない場合にのみ使用され、一般的に使用されることはめったにありません。

例は次のとおりです。

{
	"iss": "https://1.2.3.4:8443/auth/realms/kubernetes",
	"sub": "547cea22-fc8a-4315-bdf2-6c92592a6e7c",
	"aud": "kubernetes",
	"exp": 1525158711,
	"iat": 1525158411,
	"auth_time": 0,
	"nonce": "n-0S6_WzA2Mj",
	"acr": "1",
	"azp": "kubernetes",
	"nbf": 0,
	"typ": "ID",
	"session_state": "150df80e-92a1-4b0c-a5c5-8c858eb5a848",
	"userId": "123456",
	"preferred_username": "theone",
	"given_name": "the",
	"family_name": "one",
	"email": "[email protected]"
}

おすすめ

転載: blog.csdn.net/thesprit/article/details/112648425