首页 文章

是否可以询问浏览器:“发送NTLM身份验证,但前提是您已准备好凭据”?

提问于
浏览
0

在我们的应用程序中,我们支持在特定Intranet域中授权使用NTLM的用户,以及使用我们存储在数据库中的标准登录/密码对授权的用户 . 当一个新用户注册时,很高兴知道他是否拥有NTLM证书并且只是提示他使用这些,而不是通用的注册表 .

即类似的东西(伪代码):

if user.has_ntlm_credentials:
    ask ("You are known as {domain}\{username}, register in the application?")
else:
    show_login_password_registration_form ()

如果我让页面发回401 HTTP代码并要求NTLM通知,如果用户已经过身份验证(例如来自该Intranet并使用Windows),我将得到上述内容 . 但是对于其他每个用户来说,浏览器都会显示丑陋的身份验证对话框,在注册页面上看起来非常不合适 .

所以,问题是, is it possible to ask browser for already available NTLM credentials, if any?

1 回答

  • 0

    没有;但您可以使用Negotiate,这将要求用户具有现有Kerberos票证(在此方案中通过Active Directory身份验证)进行身份验证 . 对没有票证的用户没有提示 .

    NTLM和Negotiate不同的身份验证机制:NTLM是一种简单的质询/响应机制,而Negotiate则是更安全(和更复杂)的Kerberos协议的封装 . 这两种机制都可用于允许Windows用户在登录其计算机时只需进行一次身份验证,然后使用这些登录用户凭据对后续网络连接进行身份验证 . (虽然Negotiate只有在域加入Active Directory时才有效,而NTLM可以在工作站设置中工作 . )

相关问题