您可以通过在服务器配置中配置 JWT 使用者元素并在应用程序中实现 com.ibm.websphere.security.jwt.JwtConsumer 和 com.ibm.websphere.security.jwt.JwtToken API,以编程方式验证和解析 JSON Web Token (JWT) 令牌。
关于此任务
有关 JWT API 的信息,请参阅 JSON Web Token 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 元素必须将 URL 安全的唯一字符串指定为 id 属性。如果缺少标识,那么不会处理 jwtConsumer。
对于使用 RS256 和 X.509 证书签名的 JWT 令牌,必须配置
trustStoreRef 和
trustAliasName 属性,以便可找到签名验证密钥。
- 将 JWT 颁发者的 X.509 证书导入信任库。
- 在 jwtConsumer 元素中,指定信任库标识和证书别名。
<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 Token Java 文档。
- 创建 JwtConsumer 对象
如果未指定配置标识,那么对象绑定到缺省
jwtConsumer 配置。
com.ibm.websphere.security.jwt.JwtConsumer jwtConsumer = JwtConsumer.create();
如果指定配置标识,那么对象绑定到具有指定标识的
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>");