您可以採程式設計方式,來驗證和剖析「JSON Web 記號 (JWT)」的記號,作法是在伺服器配置中配置
JWT 消費者元素,並在您的應用程式中實作
com.ibm.websphere.security.jwt.JwtConsumer 和
com.ibm.websphere.security.jwt.JwtToken API。
關於這項作業
如需 JWT API 的相關資訊,請參閱 JSON Web 記號 Java 說明文件,或產品之
${wlp.install.dir}/dev 目錄中所包含的 API 說明文件。
程序
- 在 server.xml 檔中,新增 jwt-1.0 特性。
<featureManager>
<feature>jwt-1.0</feature>
...
</featureManager>
- 修改 jwtConsumer 元素,以配置 JWT 消費者。
如需您可以配置之 jwtConsumer 屬性的相關資訊,請參閱 JWT 消費者 (jwtConsumer)。
在您新增
jwt-1.0 特性,並儲存您的變更時,
Liberty 會新增下列的預設
jwtConsumer 元素。
<jwtConsumer id="defaultJWTConsumer">
</jwtConsumer>
在這項預設配置中,假設有下列值:
- 所耗用之 JWT 的 alg 標頭是 RS256。您可以在
signatureAlgorithm 屬性上配置此值。
- 會將 JWT 視為在 exp、nbf 和 iat 聲明的 5 分鐘內有效。您可以在
clockSkew 屬性上配置此值。
您可以重新配置這個預設 jwtConsumer
元素,或是建立一或多個其他的 jwtConsumer 元素。每一個 jwtConsumer
元素必須有一個指定成 id 屬性,且可在 URL 中安全傳輸的唯一字串。如果遺漏該 ID,就不會處理
jwtConsumer。
如果是使用 RS256 和 X.509 憑證簽署的 JWT 記號,您必須配置
trustStoreRef 和
trustAliasName 屬性,以便能找到簽章驗證金鑰。
- 將 JWT 發證者的 X.509 憑證匯入至信任儲存庫。
- 在 jwtConsumer 元素中,指定信任儲存庫 ID 和憑證別名。
<jwtConsumer id="defaultJWTConsumer" trustStoreRef="truststore_id" trustAliasName="certificate_alias">
</jwtConsumer>
- 在您的應用程式中實作
com.ibm.websphere.security.jwt.JwtConsumer 和
com.ibm.websphere.security.jwt.JwtToken API,以便以程式設計方式來驗證和剖析 JWT 記號。
如需相關資訊,請參閱 JSON Web 記號 Java 說明文件。
- 建立 JwtConsumer 物件
如果您沒有指定配置 ID,則物件會關聯於預設
jwtConsumer 配置。
com.ibm.websphere.security.jwt.JwtConsumer jwtConsumer = JwtConsumer.create();
如果您有指定配置 ID,物件會關聯於具有指定 ID 的
jwtConsumer 配置。
com.ibm.websphere.security.jwt.JwtConsumer jwtConsumer = JwtConsumer.create("jwtConsumer_configuration_id");
- 實作
com.ibm.websphere.security.jwt.JwtToken API,以驗證和剖析 JWT 記號。
JwtToken jwtToken = jwtConsumer.createJwt("Base64_encoded_JWT_token>");