我有一个包含三场战争的耳朵。 war1使用用户登录,这可以正常工作。 war2与app1和war3 for app2。
我要做的是共享会话并将安全过滤器应用于war2和war3。如图所示。我怎样才能做到这一点?
首先,您需要了解所有三个应用程序都是独立的,并且由上下文分隔,并且不共享任何资源,并且不能直接相互通信。为此,您需要使用像keycloak这样的外部身份验证服务。也许单个EJB作为自己的模块存在于EAR中并被所有战争使用,因此EJB保持安全状态。
在websphere中有一个WebsphereApllicationSession,它允许在模块之间共享状态,但这个websphere是特定的。此类功能取决于您使用的应用程序服务器,并且不可移植。
有关详细信息,请参阅以下链接,但我建议使用SSO服务器,例如keycloak。
https://softwareengineering.stackexchange.com/questions/178290/why-cant-wars-share-session-info
Wildfly share session between EARs?