> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/classic-push-provisioning/ja/gaido/dtanoto/kdojwt.md).

# 認可コード（JWT形式）

認可コードはイシュアによって生成されたJSON Web Token（JWT）です。これは次に従います [RFC 7519](https://tools.ietf.org/html/rfc7519) 仕様であり、TSHサーバーの識別と完全性の保護を提供します。

JWTは認可管理と識別の伝播に広く使用されています。実装例については次に記載のライブラリを参照してください [jwt.io](https://jwt.io/#libraries-io).

JSON Web Tokenはヘッダー、クレーム、署名の三つの部分で構成されます。各部分はbase64urlでエンコードされたJSONオブジェクトです。

### パート1: ヘッダー

ヘッダーはトークンに使用される署名アルゴリズムを定義します。

サポートされているフィールドと値は次のとおりです：

| フィールド   | 説明                                                                                                                                        |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **typ** | 静的値 'JWT'                                                                                                                                 |
| **alg** | 署名計算にRSA 2048を使用しハッシュにSHA256を使用する場合は 'RS256'。                                                                                             |
| **kid** | <p>JWTの署名に使用された鍵の識別子。<br>これはイシュアとTSHサーバー間のオンボーディングプロセスで共有されます。<br>鍵ローテーションの管理についてはRFUです。基本的に鍵を一意に識別できる限り任意の値にできます。サムプリントやランダム値など可能です。</p> |

例：

```json
// S{ "typ": "JWT", "alg": "RS256" }
```

{ "typ": "JWT", "alg": "RS256" }

ヘッダー（base64）は：

> `eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9`

### パート2: クレーム

認可コードには認証済みユーザーに関するクレームが含まれます。またトークンの有効期間も定義します。サポートされているクレームフィールドと値は次のとおりです：

| フィールド   | 説明                                                                                                           |
| ------- | ------------------------------------------------------------------------------------------------------------ |
| **iss** | オンボーディングプロセスで提供されたissuerIdの値。                                                                                |
| **sub** | プッシュプロビジョニング要求のために認可されたPANを識別するissuerCardRefIdの値（すでにJWEペイロードで提供されている）であるか、LCM操作のためのtokenIdである必要があります。        |
| **aud** | 「オーディエンス」はトークンリクエスタなので、このフィールドにはtokenRequestorIdが提供されます。値は次のとおり： **GOOGLE\_PAY / APPLE\_PAY / SAMSUNG\_PAY** |
| **exp** | <p>JWTの有効期限日。日付形式はRFC 7519仕様で定義されています。<br>推奨最大値は現在の日時＋5分です。</p>                                              |
| **iat** | JWTが発行された時刻。                                                                                                 |
| **jti** | <p>JWTの一意の識別子。<br>このフィールドはオプションですが、設定される場合は各リクエストごとに一意でなければなりません。</p>                                        |

### パート3: 署名

署名はヘッダーとクレームを連結したものに対してRSA-2048とSHA-256を使用してイシュアの秘密鍵で計算されます `PRIVATE_KEY`。TSHサーバーはオンボーディングプロセスでイシュアによって提供された証明書を使用して署名を検証します。

以下のNode.jsの例はJWTを生成する方法を示しています：

```javascript
const jwt = require('jsonwebtoken');
const { v4: uuidv4 } = require('uuid');
const privateKey = fs.readFileSync('private.key');

var JWT = jwt.sign(
  { 
    iss: 'acmebank', 
    sub: panId,
    aud: 'APPLE_PAY',
    exp: Math.floor(Date.now() / 1000) + (2 * 60), // 有効期限2分のJWT
    jti: uuidv4(),
  }, 
  privateKey, 
  { algorithm: 'RS256'}
);
```

認可コードの例：

```
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhY21lYmFuayIsInN1YiI6IjEyMyIsImF1ZCI6IkFQUExFX1BBWSIsImp0aSI6IjE4ODU5NTIxLTFmNTQtNGIxNy1hNjA0LWU0MDFmZTAzMjllZCIsImV4cCI6MTcyMzQ3NDIwNywiaWF0IjoxNzIzNDc0MDg3fQ.GGUfe8o8Uw6wl70bnO0tRgrflLAY63gLU_G_ssqBIP6-mQLO0NSgu8OGmKn2fxD91POfSS1W8aifxZMRnFQ721GBwD8UM9eDjXmglHN-l_ILYv4zEgy9ghZ7j0cif9sGObt2Zz35-21SXccK1twtvjrzAODl7XJ4KfFl8VT2OHhwsB2WT6HKYAw1uB8kPc6S3sOqB6eM3NJ6hw6mBCfSOkEp0KXeipiYmChiylCKWSM6Wv3o5YVn9_9oCi1O6Cw7Tk-F9YqU8GtGrFWNfYRL3VbgUPqIqWbzb88hbuZPC485rfiK56TxIJBbqmdQtqBHcoGWAhywCLD4zbOU3viCzQ
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.payments.thalescloud.io/classic-push-provisioning/ja/gaido/dtanoto/kdojwt.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
