gpt4 book ai didi

java - 如果可用,哪种是使用单点登录通过 Active Directory 进行身份验证的最佳方法?

转载 作者:行者123 更新时间:2023-11-30 08:27:33 25 4
gpt4 key购买 nike

我们需要通过 Active Directory 进行身份验证。我们希望域内的 Windows 用户无需输入用户名和密码即可进行身份验证(单点登录),但外部用户(或不使用 Internet Explorer 的用户)也可以输入用户名和密码并登录。

我们还需要在用户所属的组中伸出手,因为这将改变该用户在我们网站上看到的内容。

我们使用带有 Jetty 的 Java 作为我们的应用程序服务器,并在 Windows 中进行开发,但我们的服务器将是 Linux。

谢谢!

最佳答案

正如@Akber 所建议的,您可以使用 IP 范围。您需要一个将使用远程地址或 X-Forwarded-For header 的公共(public)端点,您可以使用 IP 测试它是否在 Intranet 范围内,这是 10.0.0.0/8, 172.16.0.0/12 , 192.168.0.0/12.

如果 IP 在 Intranet 范围内,您可以重定向到 Apache 代理(稍后详细介绍)。如果 IP 超出范围,您将重定向到具有漂亮外观的端点。

集成身份验证端点

Apache mod_auth_kerb是在 Linux 中针对这种情况为我们工作的唯一方法之一。您可以将 apache 配置为 kerberos 代理,它将协商 kerberos,然后使用 header 调用您的后端。这是一个配置示例:

  ProxyPass        / http://localhost:9005/ #your backend
ProxyPassReverse / http://localhost:9005/ #your backend
ProxyPreserveHost On

## Rewrite rules
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]

## Request header rules
## as per http://httpd.apache.org/docs/2.2/mod/mod_headers.html#requestheader
RequestHeader set X-Forwarded-User %{RU}e

<Location />
AuthName "Kerberos Login"
AuthType Kerberos
Krb5Keytab /path/to your keytab/HTTP.keytab
KrbAuthRealm DOMAIN.LOC
KrbMethodNegotiate on
KrbSaveCredentials off
KrbVerifyKDC off
KrbServiceName HTTP/YOURAPP.AD2008R2.LOC
Require valid-user
</Location>

然后您的后端将收到 X-Forwarded-User,您可以使用 LDAP 递归地获取完整的配置文件和组。

注意有一个 /path/to your keytab/HTTP.keytab,这个文件应该从绑定(bind)到域的 Windows 机器生成。

表单例份验证端点

这由您的应用程序直接处理,一旦您收到用户名和密码,您将必须尝试使用​​ LDAP 协议(protocol)“绑定(bind)”到 AD,然后您必须递归地获取用户配置文件和组。

这种方法的缺点和替代解决方案

看似简单,其实你这边的工作量很大,不仅是代码,还有维护。还有其他两种解决方案可能适用于您的情况,但需要部署其他产品;

  • ADFS : 是 Microsoft 的产品,可以部署在 Windows Server (IIS) 中,使用 AD 进行身份验证并与 WS-Federation 或 SAML 对话。
  • Auth0 :可以在本地部署,它作为虚拟设备 (linux) 提供。它可以使用任何身份提供者进行身份验证,当然包括 AD。我们为 AD 做的事情与我在此处描述的类似,但在您的应用程序中您不需要做任何事情,您只需使用 OAuth 库或仅使用 JWT 验证库。

免责声明:我为 Auth0 工作

关于java - 如果可用,哪种是使用单点登录通过 Active Directory 进行身份验证的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789366/

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