【发布时间】:2017-12-09 05:21:42
【问题描述】:
我正在开发一个 Web 应用程序,它将在 Cisco Jabber 中用作自定义选项卡。
在我的应用程序中,用户需要登录。第一次身份验证是使用 Spring SAML (SSO) 完成的。如果此身份验证失败,则用户回退到其中一个身份验证过程:
- A:直接使用他的用户 ID(不是真正的身份验证,但某些客户端需要)
- B:登录表单(针对客户端数据库的身份验证)
问题是某些操作正在创建弹出窗口,而使用 Jabber 时,这些弹出窗口在 Internet Explorer 中打开,其中没有关于我的用户的任何信息,因此我的应用程序尝试再次对他进行身份验证。如果 SSO 正常工作,则用户无需执行任何操作,如果失败 auth A 工作正常,但如果选择了 auth B 则我有问题,因为我需要用户无需他输入凭据即可进行身份验证。
Spring、Spring Security 有没有办法将会话从 Jabber 复制到 IE 以跳过登录页面?
我按照这里的建议尝试将 jsessionid 设置为我的弹出 url 的参数,如下所示:
var logUrl = 'login.do' + (this.user === '' ? ';jsessionid=' + sessionId : '?userId=' + this.user);
var w = window.open(logUrl, number, 'width=800,height=600,resizeable=yes,scrollbars=yes,toolbar=no,location=yes,status=yes,menubar=yes');
问题是当用户打开弹窗时,url中的jsessionid和Jabber中的不一样。如果我尝试在 Jabber 中使用用户的 JSESSIONID 登录,则它不起作用。
是否有一些我没有设置的配置参数让它工作?
【问题讨论】:
-
请将解决方案作为答案发布,而不是作为问题的更新。这是为了避免混淆。我已回滚您的编辑,您可以在 revisions 中看到。谢谢。
标签: java spring spring-mvc spring-security