【发布时间】:2015-10-27 13:26:19
【问题描述】:
是否有人成功地使用 Active Directory 凭据而不是应用程序特定的用户名/密码来保护 Web 服务?
我有一个与使用 Axis2 1.5.1 编写并部署在 Tomcat 6.0.24 上、部署在 Linux、FWIW 上的 Web 服务通信的应用程序。
我已将 Tomcat 从 JDBCRealm(针对数据库进行身份验证)更改为 JAASRealm,配置为使用 Centrify(客户端的首选解决方案)访问 AD。
这适用于 Web 应用程序,但对于 Web 服务,我会收到 403 响应。
我使用简单的 Axis2 服务(使用 Axis2 1.5.1 编写)进行了测试,并针对 Tomcat 6.0.24 和 7.0.63 进行了部署。我还尝试过使用 Axis2 1.6.2 编写的 Web 服务。在每种情况下我都得到相同的结果。我正在使用浏览器进行测试,顺便说一句。当服务工作时,我得到 xml;当它没有出现错误时。
我想知道是否需要更改axis2.xml 中的某些内容,因为即使https://tomcat:8443/HelloWorld(我的服务称为HelloWorld)也会生成403。
一些配置细节...
我已将 server.xml 中的领域更改为以下内容
<Realm className="org.apache.catalina.realm.JAASRealm"
appName="CENTRIFYDC"
roleClassName="com.centrify.dc.tomcat.RolesPrincipal"
userClassName="com.centrify.dc.tomcat.LoginPrincipal" />
<Valve className="com.centrify.dc.tomcat.ContextValve" />
在 web.xml 我已经添加了
<security-constraint>
<display-name>Security Web Service</display-name>
<web-resource-collection>
<web-resource-name>Secured Area</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>SPNEGO</auth-method>
<realm-name>CENTRIFYDC</realm-name>
</login-config>
<!-- Security roles referenced by this web application -->
<security-role>
<role-name>USER</role-name>
</security-role>
我已将 USER 角色映射到我的一个 AD 组
任何对某人有用的建议或指导或设置都会非常有用,谢谢。
【问题讨论】:
标签: web-services tomcat active-directory single-sign-on axis2