Java での JWT 署名
この記事では、Java コードを使用して JSON Web Token (JWT) に署名する方法を説明します。便宜上、JWT トークンの値のみを指定するテンプレートをご用意しています。また、jwt.io コードを使用して JWT に署名することもできます。
開始する前に
JWT 署名を完了するには、以下の情報が必要です。
アルゴリズムタイプ
ペイロードのクレーム
STM APIキー
クライアント証明書のファイルパス
クライアント証明書のパスワード
STM ホスト
表 1. Host optionsCountry
Host type
SM_HOST value
United States of America (USA)
Demo
https://clientauth.demo.one.digicert.com
Production
https://clientauth.one.digicert.com
Switzerland (CH)
Demo
https://clientauth.demo.one.ch.digicert.com
Production
https://clientauth.one.ch.digicert.com
Japan (JP)
Demo
https://clientauth.demo.one.digicert.co.jp
Production
https://clientauth.one.digicert.co.jp
Netherlands (NL)
Demo
https://clientauth.demo.one.nl.digicert.com
Production
https://clientauth.one.nl.digicert.com
始める
jwtsigning.zip ファイルをダウンロードします。
ファイルを右クリックし、すべてを展開…を選択します。
JWTsigning > src > メイン > java を開きます
プレーンテキストエディタまたは統合開発環境(IDE)で JwtCreateHeader.java を開きます。
以下で望ましいアルゴリズムを見つけて指定します。
headerMap.put("alg", "< insert algorithm>");
JwtCreateHeader.java ファイルを保存します。
プレーンテキストエディタまたは統合開発環境(IDE)で、JwtCreatePayload.java を開きます。
必要なペイロードクレームを見つけ、編集して追加します。
payloadMap.put("<insert claim>", "<insert value>");
JwtCreatePayload.java ファイルを保存します。
JWT 署名
コマンドプロンプトを開く。
DigiCert® Software Trust Managerに接続するための環境変数を設定します。
SM_HOST:<Prod host or demo host> SM_API_KEY:<API key> SM_CLIENT_CERT_PASSWORD:<client certificate password> SM_CLIENT_CERT_FILE:<client certificate secure file path>
JWTsigning フォルダのファイルパスを入力します。
C:\Users\Name\Downloads\JWTsigning
実行する:
mvnw clean install
以下のコマンドを編集して実行します。
java -jar target/JWTsigning-1.0-SNAPSHOT <keypair alias> <algorithm>
FAQ
ヘッダーとは?
ヘッダ内の暗号操作により、JWTが署名されるか署名されていないか、また暗号化されているか、されている場合はどのようなアルゴリズムで暗号化されているかが定義されます。が署名されるか署名されていないか、また暗号化されているか、されている場合はどのようなアルゴリズムで暗号化されているかが定義されます。
例
headerMap.put("alg", "RS256");
ペイロードとは?
ペイロードには、一般的にユーザー情報が含まれます。ペイロードにクレームを追加する必要はありませんが、いくつでも追加できます。
例
payloadMap.put("sub", "1234567890"); payloadMap.put("name", "John Doe"); payloadMap.put("admin", "true"); payloadMap.put("iat", 1516239022);
Base64 と Base64URL の主な違いとは?
Base64には +、/、= という文字が含まれていますが、これらは一部のファイルシステム名やURLで用意された意味があります。Base64URlは、+ を - に、/ を _ に置き換えることでこれを解決しています。末尾のパディング文字 = は、不要な場合には削除することができます。