gpt4 book ai didi

java - 如何防止 guest 用户通过集成 Windows 身份验证提示登录?

转载 作者:行者123 更新时间:2023-11-28 22:52:35 30 4
gpt4 key购买 nike

我有 Tomcat 应用程序,我想添加对集成 Windows 身份验证 (IWA) 的支持。我想要以下行为:

  1. 如果用户是经过域身份验证的用户 - 我想从请求中获取用户名(IWA 本身)
  2. 如果用户不是经过域身份验证的用户 - 我只想显示带有表单的自定义页面以手动登录和验证它。

因此,我的应用程序具有以下工作流程:

  1. 用户加载静态 AngularJS 页面
  2. 此页面向/login/check_iwa 等 URL 发出 AJAX 请求
  3. /login/check_iwa 的服务器端发送 401 WWW-Authenticate: Negotiate
  4. 如果用户是域用户 - 那么浏览器将使用用户的凭据重新发送请求,如果不是 - 没有任何反应,JS 得到 401 并知道用户是访客。

我在第 4 步遇到了问题。IE 和 Chrome 总是为 guest 用户显示登录提示(FF 没有登录提示)。有没有办法避免登录提示?我有自己漂亮的登录表单,我不希望访客用户使用 native 登录提示。看来,我只需要 Kerberos 身份验证,但 IE 和 Chrome 使用带有登录提示的 NTLM 身份验证。

我是否需要发送 401 WWW-Authenticate: Kerberos 而不是 Negotiate?

最佳答案

IE 中的弹出对话框是硬编码的,您无法将其删除。它正在查询传递给 SSPI 的替代凭据。切换到 Kerberos 而不是 Negotaite 将不会给您带来任何好处,因为没有浏览器(IE、Chrome、FF)直接支持 Kerberos,只能通过 SPNEGO 支持。你真倒霉。如果 SPNEGO 失败,您可能最好使用 Basic,但最后,企业环境中的 Kerberos 失败仅意味着您的网络设置有问题,需要修复。

编辑:既然你想为内联网和互联网用户服务,你需要一个筛选认证器。如果您碰巧在 Tomcat 端使用 Authenticator,您可以轻松编写一个 SiftingAuthenticator,它根据 IP 地址范围决定哪种简洁的身份 validator 最好。使用 CombinedRealm 作为模板。

关于java - 如何防止 guest 用户通过集成 Windows 身份验证提示登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783869/

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