4.5. MicroProfile JWT 应用程序开发
4.5.1. 启用 microprofile-jwt-smallrye 子系统 复制链接链接已复制到粘贴板!
MicroProfile JWT 集成由 microprofile-jwt-smallrye 子系统提供,包含在默认配置中。如果默认配置中没有子系统,您可以添加它,如下所示:
先决条件
- EAP XP 已安装。
流程
在 JBoss EAP 中启用 MicroProfile JWT 小扩展:
/extension=org.wildfly.extension.microprofile.jwt-smallrye:add
/extension=org.wildfly.extension.microprofile.jwt-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用
microprofile-jwt-smallrye子系统:/subsystem=microprofile-jwt-smallrye:add
/subsystem=microprofile-jwt-smallrye:addCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入服务器:
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
microprofile-jwt-smallrye 子系统已启用。
4.5.2. 配置 Maven 项目以开发 JWT 应用程序 复制链接链接已复制到粘贴板!
创建一个具有所需依赖项的 Maven 项目,以及用于开发 JWT 应用的目录结构。
先决条件
- 已安装 Maven。
-
启用 MicroProfile-jwt-smallrye子系统。
流程
设置 maven 项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令创建项目的目录结构以及
pom.xml配置文件。要让 POM 文件自动管理
jboss-eap-xp-microprofileBOM 中 MicroProfile JWT 构件的版本,请将 BOM 导入到项目 POM 文件的 <dependencyManagement> 部分。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 ${version.microprofile.bom} 替换为安装的 BOM 版本。
将由 BOM 管理的 MicroProfile JWT 构件添加到项目 POM 文件的 &
lt;dependency> 部分。以下示例演示了将 MicroProfile JWT 依赖项添加到文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.3. 使用 MicroProfile JWT 创建应用 复制链接链接已复制到粘贴板!
创建一个应用,以基于 JWT 令牌验证请求,并根据令牌 bearer 的身份实施授权。
以下流程提供了生成令牌的示例代码。对于生产环境,请使用红帽单点登录(SSO)等身份提供程序。
先决条件
- Maven 项目配置有正确的依赖项。
流程
创建令牌生成器。
此步骤充当参考。对于生产环境,请使用 Red Hat SSO 等身份提供程序。
为 token the generator 实用程序创建一个目录
src/test/java,并导航到它:mkdir -p src/test/java cd src/test/java
$ mkdir -p src/test/java $ cd src/test/javaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建一个类文件
TokenUtil.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在
src/main/webapp/WEB-INF目录中创建web.xml文件,其内容如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建一个类文件
SampleEndPoint.java:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
@Path注解的方法是 Jakarta RESTful Web Services 端点。注释
@Claim定义 JWT 声明。创建类文件
App.java以启用 Jakarta RESTful Web Services:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注释
@LoginConfig (authMethod="MP-JWT", realmName="MP JWT Realm")在部署过程中启用 JWT RBAC。使用以下 Maven 命令编译应用程序:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用令牌生成器工具生成 JWT 令牌:
mvn exec:java -Dexec.mainClass=org.wildfly.quickstarts.mpjwt.TokenUtil -Dexec.classpathScope=test -Dexec.args="testUser 2017-09-15 Echoer Subscriber"
$ mvn exec:java -Dexec.mainClass=org.wildfly.quickstarts.mpjwt.TokenUtil -Dexec.classpathScope=test -Dexec.args="testUser 2017-09-15 Echoer Subscriber"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下 Maven 命令构建和部署应用程序:
mvn package wildfly:deploy
$ mvn package wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow 测试应用。
使用 bearer 令牌调用
Sample/subscription端点:curl -H "Authorization: Bearer ey..rg" http://localhost:8080/microprofile-jwt/rest/Sample/subscription
$ curl -H "Authorization: Bearer ey..rg" http://localhost:8080/microprofile-jwt/rest/Sample/subscriptionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 调用
Sample/birthday端点:curl -H "Authorization: Bearer ey..rg" http://localhost:8080/microprofile-jwt/rest/Sample/birthday
$ curl -H "Authorization: Bearer ey..rg" http://localhost:8080/microprofile-jwt/rest/Sample/birthdayCopy to Clipboard Copied! Toggle word wrap Toggle overflow