小编Sti*_*sen的帖子

Wildfly 26.1.0 Final + elytron-oidc-client + 不会将用户传播到 EJB + 用户变为匿名

我正在尝试从 WF24 升级到 WF26.1.0 Final 并从 jboss:domain:keycloak 模块迁移到 elytron-oidc-client。

我已经安装了 WF26.1.0 并使用安全部署配置了 elytron-oidc-client 以使用我们的 Keycloak 服务器进行身份验证。我可以登录我的网页并使用 WAR 部署提供的休息服务,并且获得为我的 keycloak 用户列出的正确角色。

以下是显示 elytron-oidc-client 何时检索经过身份验证的用户并将其添加到具有“虚拟”领域的通用安全域的日志:

2022-05-01 06:46:10,652 TRACE [org.wildfly.security] (default task-4) Handling SecurityIdentityCallback: identity = SecurityIdentity{principal=testuser, securityDomain=org.wildfly.security.auth.server.SecurityDomain@3e51905b, authorizationIdentity=EMPTY, realmInfo=RealmInfo{name='virtual', securityRealm=org.wildfly.security.http.oidc.OidcSecurityRealm@796ef014}, creationTime=2022-05-01T04:46:10.651489Z}
Run Code Online (Sandbox Code Playgroud)

安全部署在 stanalone-full.xml 中如下所示:

<subsystem xmlns="urn:wildfly:elytron-oidc-client:1.0">
                <realm name="MyRealm">
                    <auth-server-url>https://127.0.0.1/auth/</auth-server-url>
                    <ssl-required>NONE</ssl-required>
                    <enable-cors>true</enable-cors>
                    <principal-attribute>preferred_username</principal-attribute>
                </realm>
                <secure-deployment name="farm-application-fleet-jsweb.war">
                    <realm>MyRealm</realm>
                    <resource>MyResource</resource>
                    <public-client>true</public-client>
                </secure-deployment>
                 
            </subsystem>
Run Code Online (Sandbox Code Playgroud)

当 WAR 中部署的 REST 服务尝试连接到不同 EAR 中部署的 EJB 时,用户将变为“匿名”并且不允许访问。

以下是我的一些 Wildfly 日志,显示当我调用如下声明的 EJB 方法 getAllMvaCodes 时,经过身份验证的用户变为匿名:

@RolesAllowed({ "user","appuser" })
public GeneralResponse getAllMvaCodes …
Run Code Online (Sandbox Code Playgroud)

anonymous wildfly openid-connect oidc-client

5
推荐指数
1
解决办法
1535
查看次数

标签 统计

anonymous ×1

oidc-client ×1

openid-connect ×1

wildfly ×1