2017-07-11 14 views
1

は、私の理解からのOAuthからOpenIDの接続との違いは、クライアントがOAuthのの/トークンエンドポイントに当たったときということで、OAuthのは、次のように応答します。openID Connectは本当にユーザーを認証しますか?

HTTP/1.1 200 OK 
Content-Type: application/json 
Cache-Control: no-store 
Pragma: no-cache 

{ 
    "access_token": "SlAV32hkKG", 
    "token_type": "Bearer", 
    "refresh_token": "8xLOxBtZp8", 
    "expires_in": 3600, 
    "id_token": "e134j23jk432j" 
} 

私はIDトークンが含まれているドキュメントを読んで印象の下にありましたユーザーがパスワードを入力して認証に合格したかどうかを示す認証タイプ。したがって、これは、ユーザーが承認しただけでなく、認証されたことを確認します。私は、トークンがこれを検証するためにどのように使われているか明確ではない。

id_tokenはクライアントには不透明ではないと私は理解しています。情報がクライアントによって解釈される標準的な方法はありますか?

また、http://openid.net/specs/oauth-v2-multiple-response-types-1_0.htmlにある5. Definitions of Multiple-Valued Response Type Combinationsのドキュメントには、id_tokenが/ authorizeするためのリクエストの例が示されています。 /トークンでid_tokenを取得してはいけませんか?

+0

からAMR請求(認証方法参照)をデバッガ機能を使用することができ、私は信じているオプションです - あなたはどうか、パスワードの情報を取得することができない場合があります使用されていません。いずれにしても、ユーザーが「認証するだけでなく認証したことを確認する」という意味がわからない。パスワードが入力されたかどうかはIdPによって認証されたかどうか。何も承認されていません – iandayman

答えて

0

それはid_tokenはあなたが明確化が必要な場所だから、これは

クライアントに対して不透明ではありません私の理解です。 IDトークンはJWT(rfc7519)であり、クライアントが検証する必要があります。

ここで、「クライアント」は依拠当事者であることに注意してください。例えば、それはウェブサイトです。このクライアントは、openidプロバイダ(rfc6749に記述されている承認サーバ)で行われた認証に依存し、応答内にidトークンを使用して「エンドユーザ」を認証します。ドキュメントからの引用

、OpenIDの接続を認証するエンドユーザーを有効にするためにOAuth 2.0になりますことを

プライマリ内線番号は、IDトークンのデータ構造です。 IDトークンは、クライアントを使用している場合の認可サーバーによるエンドユーザーの認証に関するクレーム、および潜在的に要求されるその他のクレームを含むセキュリティトークンです。 IDトークンは、JSON Webトークン(JWT)として表示されます。

質問に戻るJWTを読んで理解し、それを使ってユーザーを認証する方法。 JWTの仕様はrfc7519です。クレームを含ま - タイプとアルゴリズムおよび他のメタ情報

C(JWT特許請求の範囲)が含まれて - それは、次の形式の3つのセクション

H.C.S

H(ヘッダ)基本的に含まれています許可されたユーザ

S(JWS署名rfc7515 - 基本的なヘッダとクレームを検証するMAC

これらの各部分はbase64urlでエンコードされています。 JWSはトークン発行者によって署名されていることに注意してください。ドキュメントから

IDトークンを引用

はJWS [JWS]を使用して署名し、必要に応じて両方の署名され、それによって、認証、完全性、非を提供する、JWS [JWS]それぞれJWE [JWE]を用いて暗号化されなければなりません-repudiation、必要に応じて、機密性、セクション16.14 id tokenで検証する必要がどのような

、あなたが何をする必要があるかspecification言及あたり。これはJWTについてあなたの疑問を明確にし、「エンドユーザー」

を認証するために使われている方法を

希望はトークン/で得ることがid_tokenないでしょうか?

使用するフローによって異なります。たとえば、implicit flowでは、認証応答でIDトークンを取得できます。

PS - IDトークンの内容を表示するには、https://jwt.io/

+1

これは本当に役に立ちます。私の最終的な混乱の兆候だ。エンドユーザが認証されたことをクライアントが確認するために使用される復号化されたid_tokenに特定のフィールドがあるのだろうか? – kmd

+0

@kmd確かに、検証されたIDトークンは、エンドユーザーを認証する証明です。必要なのは、トークンを確認し、必要なすべての主張が設定されているかどうかを確認することだけです。チェックMACは合法です。それは仕事をするはずです。このために、いくつかのライブラリが役に立つかもしれません[https://developers.google.com/api-client-library/]。 –

+0

さらに、トークンのサブクレームには、このIDトークンが発行されたエンドユーザーが記載されています。 –

関連する問題