Authlete サービスの JWK セット設定
はじめに
本記事では、サービスに JWK セットを登録する方法について説明します。
JWK セットの準備
- 鍵タイプ: EC (Elliptic Curve)
- 曲線: P-256
- 鍵の用途: Signing
- アルゴリズム: ES256
- 鍵の ID: 1
サービス管理者コンソール経由での JWK セットの登録
生成された "公開鍵と秘密鍵を含む JWK Set" を、対象サービス設定の「JWK Set (JWK セット)」にある「JWK Set Content (JWK セットの内容)」の項目に追加し、「更新」ボタンを押下します。

これにより、サービスへの JWK セットドキュメントの登録が完了しました。
Authlete API 経由での JWK セットの登録
前述の Web ベースの管理者コンソールを用いる代わりに、Authlete のサービス管理 API を用いて JWK セットを登録することも可能です。以下は /service/update API にリクエストする例です。"jwks" キーの値として JWK セットを指定しています。
1. 対象サービスの設定情報を取得
curl -s {Authlete API}/service/get/{Service API Key} \ -u {Service Owner API Key}:{Service Owner API Secret} \ -H 'Content-type: application/json' \ > service.json
2. 設定情報に新たな JWK セットを追加
以下の Key/Value を JWK セットとして、上記にて取得した JSON 形式の設定情報に追加し、それを updated-service.json として保存します。
"jwks": "{\"keys\": [{\"kty\":\"EC\", \"d\":\"eb4BggIO87SUjzP1M56MeXj0NQajWBwpwiDq8yoL5n4\", \"use\":\"sig\", \"crv\":\"P-256\", \"kid\":\"2019-07-25_02\", \"x\":\"f8a6jovcRTNLDWi3_c62YcW_3ZN-GH1RkiVOZgSgIYI\", \"y\":\"EB3R8W12a3tgZfNer1RP0DizT3qpRybGw_krfsE0JzY\", \"alg\":\"ES256\"}]}"
もし複数の JWK を登録する場合、どの JWK を用いて署名するかを指定します。たとえば ID トークンの署名に、"kid":"2019-07-25_02" のキー ID により識別される JWK を用いる場合には、以下の Key/Value を併せて追加します。(idTokenSignatureKeyId については API リファレンスをご参照ください)
"idTokenSignatureKeyId": "2019-07-25_02"
3. 新しい設定情報を用いてサービスを更新
cat updated-service.json | \ curl -s -X PUT {Authlete API}/service/update/{Service API Key} \ -u {Service Owner API Key}:{Service Owner API Secret} \ -H 'Content-type: application/json' \ -d @-
すると、新たに "jwks" が、以下のように出力結果に含まれるはずです。
[...] "jwks": "{\"keys\":[ {\"kty\":\"EC\", \"d\":\"eb4BggIO87SUjzP1M56MeXj0NQajWBwpwiDq8yoL5n4\", \"use\":\"sig\", \"crv\":\"P-256\", \"kid\":\"2019-07-25_02\", \"x\":\"f8a6jovcRTNLDWi3_c62YcW_3ZN-GH1RkiVOZgSgIYI\", \"y\":\"EB3R8W12a3tgZfNer1RP0DizT3qpRybGw_krfsE0JzY\", \"alg\":\"ES256\"}]}", [...]
How did we do with this article?