IDP 发起的 SAML 身份验证存在非常奇怪的问题。 重定向后,用户配置文件会以某种方式丢失。 SAML 断言检查通过。 我提取 UserProfile 并将其保存在 Play 会话中,然后执行简单的重定向。
final ProfileManager manager = new ProfileManager(playWebContext, playWebContext.getSessionStore());
manager.save(true, userProfile, false);
然后我进行重定向,将用户身份验证添加到会话中。 但个人资料不在会话中。
final ProfileManager manager = new ProfileManager(context, context.sessionStore);
Optional<CommonProfile> optionalProfile = manager.getProfile(CommonProfile.class);
此问题会触发 SP 发起的流程,该流程与上述流程相同 - 代码完全相同,但工作正常。 发生重定向并且配置文件按预期出现在会话中。
任何国内流离失所者似乎都会发生这种情况。 我已经在我的 qa 环境中使用 Entra IDP 进行了测试,并在本地使用 KeyCloak 进行了测试。
我已确认配置文件已保存在会话中。 保存后,我有一些调试代码可以再次将其拉出。 个人资料就在那里。 但同样,一旦发生重定向,它就会丢失。
您的 Play 会话使用什么会话存储(
PlayCookieSessionStore
、PlayEhCacheSessionStore
、...)?当发生重定向(并创建新会话)时,PLAY_SESSION cookie 是否会以某种方式丢失?