JSON web トークンの作成
最終更新日: 2025年3月27日
- トピック:
- アダプティブフォーム
作成対象:
- 初心者
- 中級
- 開発者
JSON web トークンは、2 つの当事者間の要求を安全に表すための、オープンで業界標準の RFC 7519 メソッドです。このサンプルでは、JWT を生成するために JWT.io ライブラリを使用しています。
前の手順でダウンロードしたサービス資格情報には、PKCS#1 形式の秘密鍵が含まれます。この文字列から秘密鍵を抽出するために、BouncyCastle ライブラリを使用しました。Java の一部である暗号ライブラリは、PKCS#1 形式をサポートしていません。
JWT の生成には、次のコードを使用しました。
public String getJWTToken()
{
Security.addProvider(new BouncyCastleProvider());
RSAPrivateKey privateKey = null;
GetServiceCredentials getCredentials = new GetServiceCredentials();
try
{
long now = System.currentTimeMillis();
Long expirationTime = now + TimeUnit.MINUTES.toMillis(5);
// get the private key string from the service credentials
String privateKeyString = getCredentials.getPRIVATE_KEY();
//The JWT signature algorithm we use to sign the token
SignatureAlgorithm sa = SignatureAlgorithm.RS256;
Reader targetReader = new StringReader(privateKeyString);
// PEMParser removes the unnecessary headers and decodes the underlying Base64 PEM data into a binary format.
PEMParser pemParser = new PEMParser(targetReader);
// tores the result generated by the pEMParser
Object object = pemParser.readObject();
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
KeyPair kp = converter.getKeyPair((PEMKeyPair) object);
privateKey = (RSAPrivateKey) kp.getPrivate();
//Let's set the JWT Claims
Map < String, Object > jwtClaims = new HashMap < String, Object > ();
jwtClaims.put("iss", getCredentials.getORG_ID());
jwtClaims.put("sub", getCredentials.getTECH_ACCT());
jwtClaims.put("exp", expirationTime);
jwtClaims.put("aud", "https://" + getCredentials.getIMS_ENDPOINT() + "/c/" + getCredentials.getCLIENT_ID());
String metascopes[] = new String[] { getCredentials.getMETASCOPE_ID() };
for (String metascope: metascopes)
{
jwtClaims.put("https://" + getCredentials.getIMS_ENDPOINT() + "/s/" + metascope, java.lang.Boolean.TRUE);
}
// Create the final JWT token
String jwtToken = Jwts.builder().setClaims(jwtClaims).signWith(sa, privateKey).compact();
System.out.println("Got JWT Token " + jwtToken);
pemParser.close();
return jwtToken;
} catch (IOException e) {
System.out.println("The error is " + e.getMessage());
}
return null;
}
Experience Manager
- 概要
- Playlists
- AEM as a Cloud Service の概要
- Experience Cloud との統合
- 基盤技術
- Edge Delivery Services
- Cloud Manager
- ローカル開発環境の設定
- 開発
- AEMのデバッグ
- AEM API
- コンテンツ配信
- キャッシュ
- AEMへのアクセス
- 認証
- 高度なネットワーク
- セキュリティ
- AEM イベンティング
- 移行
- コンテンツフラグメント
- Forms
- Forms as a Cloud Service向けの開発
- アダプティブフォームの作成
- ヘッドレスフォームを使用したカスタム送信サービス
- 住所ブロックコンポーネントの作成
- クリック可能な画像コンポーネントの作成
- AEM Formsと Analytics
- 国ドロップダウンコンポーネントの作成
- ボタンのバリエーションの作成
- 垂直タブの使用
- Output および forms サービスの使用
- AEM Forms CS でのドキュメント生成
- Forms Document Services API の使用
- Batch API を使用したドキュメント生成
- Forms CS でのPDF操作
- Marketoとの統合
- Blob インデックスタグを使用したフォーム送信の保存
- コアコンポーネントベースのフォームに事前入力
- Azure Portal ストレージ
- フォーム入力の保存と再開
- レビューワークフローの作成
- AEM FormsのAcrobat Sign
- Microsoft Power Automate との統合
- Microsoft Dynamicsとの統合
- Salesforceとの統合
- フォームの送信データを 1 つのドライブと SharePoint に保存
- Asset Computeの拡張性
- 複数のステップから成るチュートリアル
- エキスパートリソース