我对这个主题进行了很多搜索,但找不到解决方案。
要求的简短描述:
- Wildfly 8.2 下 Web 应用程序上的 SSO
- 在 Active Directory 中验证 Windows 用户的身份
- 当 SSO 失败时回退到登录表单
- 在 Wildfly 的域配置中运行
环境:
- Microsoft AD Windows Server 2012 R2(1.机器)
- 带有 Wildfly 8.2 的 Microsoft Server 2012 R2(2. 机器)
- 2.机器已加入域
到目前为止我尝试过的是通过 ktpass、kinit 绑定 AD 和 Wildfly 服务器……它有效!
尝试以下:github.com/dstraub/spnego-wildfly
事实上,没有后备(基于表单)并且 Java 版本 1.8.0_45 存在问题,这不起作用
sourceforge.net/p/spnego/discussion/1003769/thread/700b6941/#cb84。
接下来尝试:github.com/kwart/spnego-demo
同样不起作用,Wildfly 8.2 似乎有不同的行为。
华夫饼库:
无法使其在 Wildfly 下工作,对 Tomcat 的支持很好,但仅此而已。
有人对此配置有过经验并有解决方案吗?
解释如下:
-
我创建了一个包含以下库的网络应用程序:
- 番石榴-18.0.jar
- jna-4.1.0.jar
- jna-platform-4.1.0.jar
- slf4j-api-1.7.12.jar
- 华夫饼-jna-1.7.4.jar
我已经在 web.xml 中声明了 Webfilter:
<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 之后您可以从 HttpServletRequest 读取用户
public String getUserName() {
Enumeration<String> headerNames = servletRequest.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = servletRequest.getHeader(headerName);
System.out.println("Header Name:" + headerName + " " + headerValue);
}
return servletRequest.getUserPrincipal().getName();
}
- 配置浏览器进行单点登录:
https://github.com/dblock/waffle/blob/master/Docs/ConfiguringBrowsers.md https://github.com/dblock/waffle/blob/master/Docs/ConfiguringBrowsers.md
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)