我正在尝试从 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)