Table of Contents
本記事では、暗号化した ID トークンを生成するための設定例を示します。
ID トークンの暗号化に用いる、クライアントの JWK セットを準備・登録します。手順については以下の記事をご参照ください。
本例では以下の JWK セットを登録します。
{
"keys": [
{
"kty": "EC",
"use": "enc",
"crv": "P-256",
"kid": "_agec7UaYVN4c3RZQJQhUuR6nFSnqEXywv3QaIfFRFk",
"x": "ilLNQ-Lcp_t5DBs9puJVI3JhwqlMndTILjkBrNd3Dsc",
"y": "3Uy7NIHilkOWviGXMRIl2ZUE4L7Mc8ub4VhosE3l8t8"
}
]
}
クライアントに対する ID トークンの暗号化アルゴリズムを選択します。詳細については「クライアントの設定項目 - ID トークン 」をご参照ください。
ここでは、先に登録した公開鍵に従い、以下の通り設定します。
項目 | 値 |
---|---|
ID トークンのキー暗号化アルゴリズム | ECDH_ES |
ID トークンの本文暗号化アルゴリズム | A128CBC_HS256 |
以上の設定により Authlete は、このクライアントに提供する ID トークンについて、暗号化を行うようになります。以下は暗号化された値の例です。
eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiJDeVU3XzdMNlRaeHdmZzhBNkRUNUxMSz
1ZWlBSE1yTzJyYWt5WEY0TUFZIiwieSI6InZ6MkJZd1k1WmJFUkV2OGxTcWNuREpQVkdQMExyWXpUS2NiZUR2aTVKQlUifSw
ia2lkIjoiX2FnZWM3VWFZVk40YzNSWlFKUWhVdVI2bkZTbnFFWHl3djNRYUlmRlJGayIsImVuYyI6IkExMjhDQkMtSFMyNTY
iLCJhbGciOiJFQ0RILUVTIn0..e9rmLbmTkuaUL7AdUB9umw.-o4aia0O6FUarqN3Owssu6ko4v9YqjMJXm00Sj-w7oH7YjmgZDR
j7omoXSnmU19wYFhC70yzv8U2B0pXNxLqVZOv4vQchwslP6Ms55cmgvenCHcIbsXFirb8we-6Z0EfKiKmLCy0NU8kFE0fQ-6y9
n91WI9hGPVbw968FtA2y7x2JXGv93nPryshCp4HJz2HXQeb5F18RSsCAkY5nE7-GqD81DnmG6-rdVoOBAGM7LK_lc8gIhSozmNn7
8cFtfQrNn6S0VFWM2e8SyukQtdGk3um3mZAjRdDNtsACkztQJo.5S7YimrpLKuWnRM0hwdJzweyJlcGsiOnsia3R5IjoiRUMiLCJj
cnYiOiJQLTI1NiIsIngiOiIzUHNVT0lj
上記の ID トークンを取得したクライアントは、自身の秘密鍵を用いて復号を行います。以下は復号に用いる JWK セットの例です。
{
"Keys": [
{
"kty": "EC",
"d": "4AEnTq3H8gcIutIoJCCZuv9GgWdKRaoJIXQkdM8r0UA",
"use": "enc",
"crv": "P-256",
"kid": "_agec7UaYVN4c3RZQJQhUuR6nFSnqEXywv3QaIfFRFk",
"x": "ilLNQ-Lcp_t5DBs9puJVI3JhwqlMndTILjkBrNd3Dsc",
"y": "3Uy7NIHilkOWviGXMRIl2ZUE4L7Mc8ub4VhosE3l8t8",
"typ": "ECDH_ES"
}
]
}
以下は José を用いて復号し、ペイロードを抽出する例です。
jose jwe dec -i <ID token> -k <JWK set> \
| cut -d"." -f2 \
| base64 --decode \
| jq
{
"sub": "testuser01",
"aud": [
"17201083166161"
],
"iss": "https://authlete.com",
"exp": 1595921860,
"iat": 1595835460
}