gpt4 book ai didi

jakarta-ee - Tomcat、HTTP 身份验证和 Active Directory

转载 作者:行者123 更新时间:2023-11-28 22:38:02 26 4
gpt4 key购买 nike

在我们的 Intranet 中,所有用户都从 Active Directory 域登录 Windows。我必须开发一个针对 Active Directory 对用户进行身份验证的解决方案,该解决方案在 Tomcat 中运行并适用于 Servlet 和 Axis2。

我已经能够使用基本的 JavaSE 手动验证身份验证。我还创建了一个测试 Servlet,它从 POST 接收登录名和密码,它也经过身份验证,所以如果我至少使用 HTTPS,我可以使用这个丑陋的解决方案。

我认为 HTTP 身份验证是最好的方法,因为它是 HTTP 标准并且适用于 Servlet 和 Axis2 以及浏览器和任何类型的 SOAP 客户端。

对于浏览器,期望的行为是浏览器将打开登录模式窗口,用户将输入登录名和密码,我从 Servlet 中检索它们并根据 AD 进行验证。对于 Axis2,客户端处理它设置 HTTP header 的方式,我从 Axis2 用来创建 WebService 的类中检索它(我不知道如何做,也没有搜索过......)并做同样的事情验证。

问题是我面临着很多可能性,但无法让其中任何一个发挥作用。大多数教程使用 conf/tomcat-users.xml 并且从不给我密码。其他人使用 NTLM 或 Kerberos,我已经尝试过将 spnego 用于 Servlet 但它根本不起作用,而且它不适用于 Axis2。我宁愿使用不需要第三方库的 native 解决方案。

有什么可以从哪里开始的建议吗?

最佳答案

您似乎不需要用户单点登录。在这种情况下,您不需要 NTLM 或 Kerberos。您只需要使用 Active Directory 进行服务器端身份验证。

幸运的是,AD 将自己公开为 LDAP,但有一些怪癖。请查看此答案: Configuring Tomcat to authenticate using Windows Active Directory

如果针对 AD 正确配置领域和容器 (Tomcat) 身份验证,则不需要检索 header 或编写任何代码来执行身份验证 - 容器 (Tomcat) 会为您完成。

编辑:

Web XML 示例:

 <security-constraint>
<web-resource-collection>
<web-resource-name>Wildcard means whole app</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>default</realm-name>
</login-config>
<security-role>
<role-name>user</role-name>
</security-role>

关于jakarta-ee - Tomcat、HTTP 身份验证和 Active Directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com