🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenID Connect

OpenID Connectは、 様々なWebサイトや、 モバイルアプリなどを利用する際に一つのID情報のみで 認証を実現できるようにするID連携の仕組みです。

Q&A

解決済

1回答

1007閲覧

id_tokenの使い方について

kanetugu_70e

総合スコア100

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenID Connect

OpenID Connectは、 様々なWebサイトや、 モバイルアプリなどを利用する際に一つのID情報のみで 認証を実現できるようにするID連携の仕組みです。

0グッド

0クリップ

投稿2019/11/28 15:57

編集2019/11/30 06:40

OpenID Connectに従ってid_tokenを発行した後の話なのですが、このid_tokenはアクセストークン発行要求に使う事は出来ないのでしょうか?
grant_typeがcodeやtokenのアクセストークン要求はよく見るのですが、id_tokenを使用した要求を見た事がありません。
これはid_tokenの使い道が、他の認可コード(codeなど)と何か異なる等の理由があるのでしょうか?

〜追記〜
難しく考えすぎていたのですが、下の様な流れで、ただid_tokenの署名検証をすれば良いのでしょうか?

クライアント
↓(認証リクエスト)
認可サーバー(リソースオーナー承認)
↓(id_token)
クライアント
↓(アクセストークン要求)
リソースサーバー(or認可サーバー)
・id_token署名検証
・アクセストークン発行

クライアント
↓アクセストークン
リソースサーバー

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

  • そもそもid_tokenid_tokenとは何か?

OpenID Connect(以降OIDC)フローに従って得られた「認証の結果」を表すトークン文字列。
つまり、id_tokenが得られたという事は、認証が得られたという事である。(はず...)
しかし、この認証を行ったIdP(認証サーバー)が、本当に正当なものであるかが分からない。
そこで、id_tokenの署名検証を行い、正しいIdP(認証サーバー)が認証を行ったものであると判断する。
id_tokenがJWT形式の場合、中身は署名した鍵情報やアルゴリズムを入れたHeaderと、id_tokenの発行者(iss≒認証サーバー)や、client_idなどのClaim、Header+ClaimのBase64エンコード値のSignature(署名)が入っている。

  • アクセストークンとは?

アクセスを制限する為のトークン。このトークンの中に何をすることができるかが記載されている。
(利用できるサービスのScope)
認可サーバー(認証サーバーと同じサーバーである事がほとんど?)へアクセストークン要求を行い、アクセストークンを発行してもらう必要がある。
このアクセストークンを付与して、利用したいサービス(SP)へリクエストする。
SPはアクセストークンを検証して(または認可サーバーに検証依頼)、リクエストを受け付けるか判断する。

  • アクセストークンの要求について

そもそもアクセストークンの要求は、IdpとSP間で事前に登録した静的な情報を元に作成するので、id_tokenは関係ない。
(リクエストに使用するCredentialにJWTを使う場合、署名にJWKsを使うと鍵ローテーションされる可能性もあるので、静的と言っていいかわからないが、少なくとも事前登録した値の組み合わせからリクエスト用のパラメータを作ることに変わりはない)

投稿2020/01/28 14:17

編集2020/01/28 14:20
kanetugu_70e

総合スコア100

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問