MRが楽しい

MRやVRについて学習したことを書き残す

EntraIDを使ってOpenIDConnectの認可コードフローを試す その2(認可コードフロー)

本日はAzureの小ネタ枠です。
EntraIDを使ってOpenIDConnectの認可コードフローを試したのでAzurePortalで行った設定手順を残します。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

認可コードフローを試す

初めに以下のURLをブラウザで開き、認可エンドポイントに認可コードを要求します。

https://login.microsoftonline.com/{ディレクトリ(テナント)ID}/oauth2/v2.0/authorize
?client_id={アプリケーション(クライアント)ID}
&response_type=code
&redirect_uri=http://localhost:50000/
&scope=openid

EntraIDのサインイン画面が開くので、前回記事で構築した組織ディレクトリに含まれるアカウントでサインインします。

サインインが成功すると、許可する権限の確認画面が開きます。
今回はscopeにopenidを指定したのでユーザを判別するプロファイルの権限が要求されます。

[承諾]をクリックすると、以下のリダイレクトURLが開き、認可コードを取得できます。

http://localhost:50000/
?code={認可コード}
&session_state={任意のステート番号}

次に認可コードを使用し、トークンエンドポイントからIDトークンを要求します。
postmanを使ってトークンエンドポイントにPOSTメソッドを実行します。
bluebirdofoz.hatenablog.com

以下のPOSTメソッドを実行します。

URL
https://login.microsoftonline.com/{ディレクトリ(テナント)ID}/oauth2/v2.0/token
Body

Content-Type: application/x-www-form-urlencoded

code={認可コード}
client_id={アプリケーション(クライアント)ID}
grant_type=authorization_code
redirect_uri=http://localhost:50000/

成功するとJSONテキストが返ります。id_tokenの項目でIDトークンが取得できます。

IDトークンを確認する

以下サイトでJWT文字列をデコードしてIDトークンの内容を確認できます。
jwt.io

subステータスがユーザの識別子になります。
アプリケーションはこの識別子を使ってエンドユーザを識別します。