[16.0.0.4 and later]

Liberty 中使用 JSON Web 令牌

您可以通过在服务器配置中配置 JWT 使用者元素并在应用程序中实现 com.ibm.websphere.security.jwt.JwtConsumercom.ibm.websphere.security.jwt.JwtToken API,以编程方式验证和解析 JSON Web 令牌 (JWT) 令牌。

关于此任务

有关 JWT API 的信息,请参阅 JSON Web 令牌 Java 文档或随产品包含的 ${wlp.install.dir}/dev 目录中 API 文档。

过程

  1. server.xml 文件中,添加 jwt-1.0 功能部件。
    <featureManager>
        <feature>jwt-1.0</feature>
        ...
    </featureManager>
  2. 通过修改 jwtConsumer 元素来配置 JWT 使用者。

    有关可配置的 jwtConsumer 属性的信息,请参阅 JWT 使用者 (jwtConsumer)

    添加 jwt-1.0 功能部件并保存更改时,Liberty 会添加以下缺省 jwtConsumer 元素。
    <jwtConsumer id="defaultJWTConsumer">
    </jwtConsumer>
    在此缺省配置中,将使用以下值:
    • 使用的 JWT 的 alg 头为 RS256。您可以对 signatureAlgorithm 属性配置此值。
    • JWT 在 expnbfiat 声明的 5 分钟内视为有效。您可以对 clockSkew 属性配置此值。

    您可以重新配置此缺省 jwtConsumer 元素,或创建一个或多个其他 jwtConsumer 元素。每个 jwtConsumer 元素必须将 URL 安全的唯一字符串指定为 id 属性。如果缺少标识,那么不会处理 jwtConsumer

    对于使用 RS256 和 X.509 证书签名的 JWT 令牌,必须配置 trustStoreReftrustAliasName 属性,以便可找到签名验证密钥。
    1. 将 JWT 签发者的 X.509 证书导入信任库。
    2. jwtConsumer 元素中,指定信任库标识和证书别名。
      <jwtConsumer id="defaultJWTConsumer" trustStoreRef="truststore_id" trustAliasName="certificate_alias">
      </jwtConsumer>
  3. 通过在应用程序中实现 com.ibm.websphere.security.jwt.JwtConsumercom.ibm.websphere.security.jwt.JwtToken API,以编程方式验证和解析 JWT 令牌。

    有关更多信息,请参阅 JSON Web 令牌 Java 文档

    1. 创建 JwtConsumer 对象
      如果未指定配置标识,那么对象绑定到缺省 jwtConsumer 配置。
      com.ibm.websphere.security.jwt.JwtConsumer jwtConsumer = JwtConsumer.create();
      如果指定配置标识,那么对象绑定到具有指定标识的 jwtConsumer 配置。
      com.ibm.websphere.security.jwt.JwtConsumer jwtConsumer = JwtConsumer.create("jwtConsumer_configuration_id");
    2. 通过实现 com.ibm.websphere.security.jwt.JwtToken API 验证和解析 JWT 令牌。
      JwtToken jwtToken = jwtConsumer.createJwt("Base64_encoded_JWT_token>");

用于指示主题类型的图标 任务主题

文件名:twlp_sec_consume_jwt.html