我再次需要社区的明智建议!
我必须在我的 SSO 系统中集成多个 Web 应用程序。 IdP 是 Active Directory 联合服务 (ADFS2),SP 是 Weblogic 托管服务器。我在 Web SSO 配置文件中对 SP 启动的用例使用 HTTP-POST 绑定。
此设置有效,甚至我已经实现了 WLS 的 SLO,太棒了!但是,总有一个但是...我有一个可以供未经身份验证的用户访问的应用程序,来宾用户。当用户通过身份验证时,他/她将看到不同的信息。
您认为实现这一目标的最佳方法是什么?
我正在尝试通过 JavaScript 调用 IdPXMLHttp请求,但它没有像我预期的那样工作...我的想法不是自己构建 SAMLRequest。也就是说,我不是直接调用 IdP,而是请求我的应用程序的安全资源。通过这种方式,Weblogic 向 IdP 发出请求(302 重定向)。基本上我的想法是下一个:
-
在我的 web.xml 中声明安全约束:
<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>FederatedUsers</role-name>
</auth-constraint>
-
调用安全资源(感谢 w3schools!):
<script type="text/javascript">
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "secure/login?action=sample/hello.jsp", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
-
安全资源的实现只是一个servlet重定向到原始资源:
// Get the parameter "action" and redirect
resp.sendRedirect(req.getParameter("action"));
如果我们看一下请求流程,或多或少它就达到了目的:
- http://spHost/sample/helloXmlHttpRequest.jsp http://spHost/sample/helloXmlHttpRequest.jsp
- http://spHost/sample/secure/login?action=sample/hello.jsp http://spHost/sample/secure/login?action=sample/hello.jsp
- HTTP/1.1 302 暂时移动 -->https://idpHost/adfs/ls/?SAMLRequest= https://idpHost/adfs/ls/?SAMLRequest=...
但最后我得到了error in the xmlhttp.send(): 组件返回失败代码:0x80004005 (NS_ERROR_FAILURE)
我也在尝试做令人讨厌的伎俩就像获取一个内容iframe、元素,或者只是在脚本标记中调用安全资源:
<script type="text/javascript" src="secure/login">
最后这个问题“解决方案”是我无法获取 HTML 代码。
有任何想法吗?也许 ADFS2 提供任何 REST 服务或类似的东西......
提前致谢,
Luis
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)