【问题标题】:How to retrieve keberos Tickets in the browser with javascript如何使用 javascript 在浏览器中检索 kerberos 票证
【发布时间】:2019-08-23 09:42:28
【问题描述】:

我们正在内部网中的 reactjs 中构建一个 javascript 客户端。 Intranet 站点使用自动 Windows 身份验证。我不得不承认,我们不知道这个系统如何工作的确切细节,只知道用户直接存储在活动中,我们可以使用 Windows 命令提示符中的klist 命令检索 kerberos 票证列表。我们的应用程序应该嵌入到 Intranet 站点中,并且应该检索经过身份验证的用户的用户名。此用户名将被转发到我们构建的后端系统,并将用于查询活动目录以获取用户的详细信息。我们无法控制 Intranet 站点,也不知道它是如何构建的。

现在回答我的问题。是否可以仅在浏览器中使用 javascript 来检索经过身份验证的用户的 Kerberos 票证,然后我们可以使用它来提取他们的用户名?是否有其他可能访问经过身份验证的用户的用户名?

【问题讨论】:

    标签: javascript reactjs active-directory kerberos


    【解决方案1】:

    客户端脚本不能请求安全令牌,否则这会让你陷入一个奇怪的安全兔子洞。

    您真正需要做的是让服务器发送带有 401 错误代码的 WWW-Authenticate: Negotiate 响应标头。客户端将发送一个Authorization: Negotiate XYZ 请求头。然后,您的后端框架必须将其转换为可用的身份。

    【讨论】:

    • 感谢您的回答。但是,我们的应用程序驻留在不在 Kerberos 网络内的单独服务器上。我不知道这样的身份验证协商是否可行。
    【解决方案2】:

    这只能在 Internet Explorer 中使用 ActiveX 控件来提示用户是否允许。可以看代码here

    var objUserInfo = new ActiveXObject("WScript.network");
    document.write(objUserInfo.ComputerName+"<br>"); 
    document.write(objUserInfo.UserDomain+"<br>"); 
    document.write(objUserInfo.UserName+"<br>");  
    

    没有其他浏览器可以让你这样做。

    服务器代码必须将用户名注入发送到浏览器的 JavaScript。

    【讨论】:

    • 需要明确的是,出于各种原因,这很危险,不应依赖任何安全决策。
    • @Steve 我同意。我没说这是个好主意。我希望“如果他们愿意,会提示用户”可以清楚地表明,除了只在 IE 中工作之外,依赖它是一个愚蠢的想法。
    猜你喜欢
    • 2014-03-19
    • 2012-01-06
    • 1970-01-01
    • 2022-01-03
    • 2014-09-07
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多