8.16. 使用红帽单点登录保护您的 JBoss EAP 可引导 JAR 应用
您可以使用 Galleon keycloak-client-oidc 层安装使用 Red Hat Single Sign-On 7.5 OpenID Connect 客户端适配器置备的服务器版本。
使用 keycloak-client-oidc 层已在 JBoss EAP XP 4 中弃用。使用 elytron-oidc-client 层,它提供原生 OpenID Connect (OIDC)客户端。如需更多信息,请参阅使用 OpenID Connect 开发 JBoss EAP bootable jar 应用。
keycloak-client-oidc 层向 Maven 项目提供 Red Hat Single Sign-On OpenID Connect 客户端适配器。此层包含在 keycloak-adapter-galleon-pack Red Hat Single Sign-On 功能 pack 中。
您可以将 keycloak-adapter-galleon-pack 功能 pack 添加到 JBoss EAP Maven 插件配置中,然后添加 keycloak-client-oidc。您可以通过访问 支持的配置: Red Hat Single Sign-On 7.4 网页来查看与 JBoss EAP 兼容的 Red Hat Single Sign-On 客户端适配器。
此流程中的示例演示了如何使用 keycloak-client-oidc 层提供的 JBoss EAP 功能来保护 JBoss EAP 的可引导 JAR。
先决条件
-
您已检查了最新的 Maven 插件版本,如
MAVEN_PLUGIN_VERSION.X.GA.Final-redhat-00001,其中 MAVEN_PLUGIN_VERSION 是主版本,X 是 microversion。请参阅 /ga/org/wildfly/plugins/wildfly-jar-maven-plugin 的索引。 -
您已检查了最新的 Galleon 功能软件包版本,如
4.0.X.GA-redhat-BUILD_NUMBER,其中 X 是 JBoss EAP XP 的微版本,BUILD_NUMBER 是 Galleon 功能软件包的构建号。X 和 BUILD_NUMBER 可以在 JBoss EAP XP 4.0.0 产品生命周期中演进。请参阅 /ga/org/jboss/eap/wildfly-galleon-pack 的索引。 -
您已检查了最新的 Red Hat Single Sign-On Galleon 功能软件包版本,如
org.keycloak:keycloak-adapter-galleon-pack:15.0.X.redhat-BUILD_NUMBER,其中X是 Red Hat Single Sign-On 的微版本,它依赖于 Red Hat Single Sign-On 服务器版本来保护应用程序,BUILD_NUMBER是 Red Hat Single Sign-On Galleon 功能的构建号。X 和 BUILD_NUMBER 可以在 JBoss EAP XP 4.0.0 产品生命周期中演进。请参阅 /ga/org/keycloak/keycloak-adapter-galleon-pack 的索引。 - 您已创建了 Maven 项目,设置父依赖项并添加依赖项,以创建您希望使用 Red Hat Single Sign-On 保护的应用程序。请参阅 创建可引导 JAR Maven 项目。
- 您有一个在端口 8090 上运行的 Red Hat Single Sign-On 服务器。请参阅 启动 Red Hat Single Sign-On 服务器。
您已登录到 Red Hat Single Sign-On Admin 控制台并创建以下元数据:
-
名为
demo的域。 -
名为
Users的角色。 -
用户和密码。您必须为用户分配
Users角色。 具有根 URL
的公共客户端Web 应用。该流程中的示例,将simple-webapp定义为 Web 应用程序,http://localhost:8080/simple-webapp/secured作为根 URL。重要在设置 Maven 项目时,您必须在 Maven archetype 中使用 Red Hat Single Sign-On 保护的应用程序指定值。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意流程中显示的示例指定以下属性:
-
${bootable.jar.maven.plugin.version}用于 Maven 插件版本。 -
${jboss.xp.galleon.feature.pack.version}用于 Galleon 功能软件包版本。 -
${Keycloak.feature.pack.version}用于 Red Hat Single Sign-On feature pack 版本。
您必须在项目中设置这些属性。例如:
<properties> <bootable.jar.maven.plugin.version>6.1.2.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>4.0.0.GA-redhat-00002</jboss.xp.galleon.feature.pack.version> <keycloak.feature.pack.version>15.0.4.redhat-00001</keycloak.feature.pack.version> </properties><properties> <bootable.jar.maven.plugin.version>6.1.2.Final-redhat-00001</bootable.jar.maven.plugin.version> <jboss.xp.galleon.feature.pack.version>4.0.0.GA-redhat-00002</jboss.xp.galleon.feature.pack.version> <keycloak.feature.pack.version>15.0.4.redhat-00001</keycloak.feature.pack.version> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-
名为
流程
在
pom.xml文件的<build> 元素中添加以下内容。您必须指定任何 Maven 插件的最新版本,以及org.jboss.eap:wildfly-galleon-packGalleon 功能软件包的最新版本。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Maven 插件调配部署 Web 应用所需的子系统和模块。
keycloak-client-oidc层使用keycloak子系统及其依赖项向项目提供 Red Hat Single Sign-On OpenID Connect 客户端适配器,以激活对 Red Hat Single Sign-On 身份验证的支持。Red Hat Single Sign-On 客户端适配器是使用 Red Hat Single Sign-On 保护应用程序和服务的库。在项目
pom.xml文件中,在插件配置中将<context-root> 设置为false。这会将应用程序注册到simple-webapp资源路径中。默认情况下,WAR 文件在 root-context 路径下注册。<configuration> ... <context-root>false</context-root> ... </configuration><configuration> ... <context-root>false</context-root> ... </configuration>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 CLI 脚本,如
configure-oidc.cli,并将它保存到可引导 JAR 的可访问目录中,如APPLICATION_ROOT/scripts目录,其中 APPLICATION_ROOT 是 Maven 项目的根目录。该脚本必须包含类似以下示例的命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此脚本示例在
keycloak子系统中定义secure-deployment=simple-webapp.war资源。simple-webapp.war资源是在可引导 JAR 中部署的 WAR 文件的名称。在项目
pom.xml文件中,将以下配置提取添加到现有插件 <configuration>元素中: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 可选: 通过添加
keycloak.json描述符到 web 应用程序的WEB-INF目录中,您还可以将服务器配置嵌入到 web 应用中。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,您必须将 web 应用程序的
<auth-method> 设置为KEYCLOAK。以下示例代码演示了如何设置 <auth-method>:<login-config> <auth-method>KEYCLOAK</auth-method> <realm-name>Simple Realm</realm-name> </login-config><login-config> <auth-method>KEYCLOAK</auth-method> <realm-name>Simple Realm</realm-name> </login-config>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
SecuredServlet.java的 Java 文件,其中包含以下内容,并将文件保存到APPLICATION_ROOT/src/main/java/com/example/securedservlet/目录中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将应用打包为可引导 JAR。
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动应用程序。以下示例从指定的可引导 JAR 路径启动
simple-webappWeb 应用程序:java -jar target/simple-webapp-bootable.jar
$ java -jar target/simple-webapp-bootable.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Web 浏览器中指定以下 URL,以访问通过 Red Hat Single Sign-On 保护的网页。以下示例显示了安全
simple-webappWeb 应用程序的 URL:http://localhost:8080/simple-webapp/secured
http://localhost:8080/simple-webapp/securedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 以来自您的 Red Hat Single Sign-On 域的用户身份登录。
验证 : 检查网页是否显示以下输出:
Current Principal '<principal id>'
Current Principal '<principal id>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow