IDトークンに属性/クレームがない
Single Sign-On
API Access Management
Okta Classic Engine
Overview

この記事では、IDトークンから属性/クレームが欠落している場合がある理由と、そのような場合にすべてのユーザークレームやOktaグループを取得する方法について説明します。


この記事では、次のことを想定しています。

Applies To
  • Implicitフロー
  • Authorization codeフロー
  • リソース所有者のパスワードフロー(grant_type = password
Cause

アクセストークンと一緒に返されたIDトークンは、ThinトークンまたはThin IDトークンとみなされます。Thin IDトークンは、基本クレームといくつかのスコープ依存クレームのみを持っています。たとえば、「profile」スコープがリクエストされ、Thinトークンが返された場合、IDトークンのペイロードには「preferred_username」クレームと「name」クレームが含まれますが、「given_name」や「family_name」など、「profile」スコープ依存のほかのクレームは含まれません。


IDトークンとアクセストークンが一緒に返される例として、たとえば次のような場合があります。

  • Implicitフロー(response_type=id_token+tokenの場合)
  • Authorization codeフロー(「openid」スコープが認可リクエストで渡される場合)
  • リソース所有者のパスワードフロー(「openid」スコープがトークンリクエストで渡される場合)


注:Implicitフロー(response_type=id_token)でIDトークンのみが(たとえばアクセストークンなしで)返される場合、返されるIDトークンはFatトークンとみなされ、profileスコープが渡される場合にはすべてのプロファイル属性、groupsスコープが渡される場合にはすべてのグループが含まれます。 


この挙動は、スコープ依存のクレームに関するOpenIDの仕様に基づいています。セクション5.4からの次の引用をご覧ください:

  • 「処理の結果としてアクセストークンが発行されるresponse_typeを使用したとき、profile、email、address、およびphone scope値により要求されるクレームは、セクション5.3.2にある通りUserInfo Endpointから返される。しかし、(response_type値がid_tokenであるケースのように)アクセストークンが発行されない場合、結果クレームはIDトークン内で返却される。」
Solution

これらのフローでは、アクセストークンはIDトークンと一緒に返されます。このアクセストークンは、ユーザークレーム(適切なスコープが渡されている場合はすべてのプロファイル属性/クレーム)を取得するために使用できます。

アクセストークンは、Userinfoリクエストの認可ヘッダーでベアラートークンとして送信することができます(つまり基本URLhttps://OktaDomain.okta.comまたはカスタムドメインの場合はPOST ${baseUrl}/oauth2/v1/userinfo)。

 

関連資料

 

Recommended content

No recommended content found...