[Azure] マネージド ID のトークンをみてみよう

こんにちは、アーキテクトのやまぱんです。
補足コメントや質問、<font color="red">**いいね、拡散**</font>、是非お願いします🥺！
間違ってたら<font color="red">**優しく**</font>教えてください！


## きっかけ
マネージド ID の トークンの中身がみれるらしいので見てみましょう

## トークンの内容をみてみよう
トークンはBASE64でエンコードされているので、以下のMicrosoft（マイクロソフト）が運営しているサイトでデコードして人が読める形で確認可能。
このサイトは主にAzure AD（Azure Active Directory）やMicrosoftの認証サービスを利用する開発者向けに、JWT（JSON Web Token）のデコードおよびデバッグツールを提供しています。

https://jwt.ms/

> JWT（JSON Web Token）をデコードし、その内容を表示するためのWebサイトです。以下の機能を提供します。
> + JWTのデコード: JWTを入力すると、そのヘッダー、ペイロード、署名をデコードして表示します。
> + クレームの確認: デコードされたJWTのクレームを確認し、トークンに含まれている情報を簡単に閲覧できます。
> + エラーの特定: 不正なJWTやエラーがある場合、それを識別し、どの部分に問題があるかを示します。

### 実際のトークンを載せるのは良くないのでまずはサンプル
MS Learn にあるサンプルを使います。
+ トークンの形式 MS Learn
https://learn.microsoft.com/ja-jp/entra/identity-platform/access-tokens#token-formats

```jwt:jwt
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd
```

↑をコピー＆ペーストします。
以下のように確認可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/5869d0bc-2fa3-1b5c-5562-51626165012e.png)

### 実際のマネージド ID のアクセストークン を見てみる
#すきやねんAzure のセッションの中ではこちらのPowerShellでトークンを取得して、実際のトークンを使ってデコードしてました。 
https://github.com/hiyoshino/Sukiyanen_ManagedID/blob/main/scripts/demoscript3.ps1

上記をベースに以下のスクリプトを作成

```PowerShell：マネージドIDのアクセストークンの取得
# Set the resource URL
$resource = "https://management.azure.com/"

# Construct the IMDS URL
$authuri = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + $resource

# Get the token from IMDS
$authContext = Invoke-WebRequest -Uri $authuri -Method GET -Headers @{Metadata="true"}

# Extract the token from the response
$authResponse = $authContext.Content | ConvertFrom-Json
$accessToken = $authResponse.access_token

# Display the access token
$accessToken
```
+ 実行イメージ
Azure VM であることがわかるように DNS サフィックスも表示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/2cedc642-14ba-d087-7606-f8e87b9f5b1d.png)


得られたトークンを https://jwt.ms/ に張り付けて、確認

参考までに下記のような情報が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/a4b0eb2f-a6b0-e7be-6273-c23d7318a733.png)

以上！