我在 WildFly 中部署了一个 JAX-RS 应用程序。应用程序的端点应受 Keycloak 的保护Access Type: bearer-only
。这对于高达 24 的 WildFly 版本非常有效。
从 WildFly 25 开始,不推荐使用 Keycloak 适配器,应该迁移到新的 Elytron 子系统。根据这个 WildFly 问题https://issues.redhat.com/browse/WFLY-15485但是 OIDC 适配器还没有准备好使用bearer-only
. 但是提到它仍然可以使用 Keycloak Wildfly 适配器。
最新的 Keycloak 文档和Google Groups 中的这个帖子也说明了这一点。
所以我从这个位置安装了适配器并运行了安装脚本:
./bin/jboss-cli.sh --file=bin/adapter-elytron-install-offline.cli -Dserver.config=standalone-full.xml
部署应用程序时,我收到以下错误消息:
java.lang.IllegalStateException: The required mechanism 'KEYCLOAK' is not available in mechanisms [BASIC, CLIENT_CERT, DIGEST, FORM] from the HttpAuthenticationFactory
设置
- WildFly 26(雅加达 EE 8)
- 钥匙斗篷 16.1.1
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- Security configuration -->
<security-constraint>
<web-resource-collection>
<web-resource-name>admin-api</web-resource-name>
<url-pattern>/administration/*</url-pattern>
<url-pattern>/operations/*</url-pattern>
<url-pattern>/applications/*</url-pattern>
<url-pattern>/entities/*</url-pattern>
</web-resource-collection>
</security-constraint>
<login-config>
<auth-method>KEYCLOAK</auth-method>
<realm-name>this is ignored currently</realm-name>
</login-config>
<security-role>
<role-name>*</role-name>
</security-role>
</web-app>