我使用 Wildfly 30 (Jakarta EE10) 创建了一个 Web 应用程序。身份验证与 Keycloak 一起使用。 我使用注释:
@OpenIdAuthenticationMechanismDefinition(
providerURI = "${openIdConfig.providerUrl}",
clientId = "${openIdConfig.clientId}",
clientSecret = "${openIdConfig.clientSecret}",
redirectURI = "${openIdConfig.redirectUrl}",
claimsDefinition = @ClaimsDefinition(callerGroupsClaim = "roles"),
logout = @LogoutDefinition(redirectURI = "/logout.html", notifyProvider = true)
)
在 web.xml 中,我定义了
<security-constraint>
和 <security-role>
,它们都按预期工作。
这工作正常,但在 Keycloak 中的“访问令牌生命周期”的生命周期(默认为 5 分钟)之后,会话将关闭,用户必须再次登录。即使用户不断请求新页面也会发生这种情况。
如何让用户保持登录状态直到会话过期(默认 30 分钟)。
原来我有课:
@ApplicationPath("/rest")
public class JaxRsActivator extends Application {
}
在我实施雅加达安全之前,这曾经运行良好。 如果我删除这个类,应用程序运行良好,5 分钟后不会再出现问题。当然,也没有更多的休息请求。 当我添加注释时
@DeclareRoles({ "Admin",....})
该应用程序也运行良好。当然,休息请求再次正常工作。
所以
@DeclareRoles
丢失了。