1

我在 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 中的这个帖子也说明了这一点。

所以我从这个位置安装了适配器并运行了安装脚本:

https://github.com/keycloak/keycloak/releases/download/16.1.1/keycloak-oidc-wildfly-adapter-16.1.1.zip

./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>
4

1 回答 1

0

我终于让它在没有 Keycloak 适配器的情况下工作,即使用新的内置 Elytron 子系统。

oidc.json(位于WEB-INF目录中)

{
  "realm": "myrealm",
  "client-id": "my-client-app",
  "auth-server-url": "${keycloak.url}/auth",
  "provider-url": "${keycloak.url}/auth/realms/myrealm",
  "bearer-only": true,
  "enable-cors": true,
  "ssl-required": "none"
}

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">

    <!-- other configuration -->

    <login-config>
        <auth-method>OIDC</auth-method>
    </login-config>

</web-app>
于 2022-02-01T07:31:09.560 回答