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も返されます。
- クライアントは認証要求を認証サービスに送信します。
- エンドユーザーは、認証ページで承認確認を実行します(オプション)。
- 認証サービスは認証要求を検証し、IDトークンをクライアントに送信します。
- クライアントはサービスを要求し、その要求にはIDトークンが含まれます。
- ビジネスサービスは、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]"
}