【问题标题】:Getting User Identity from a POST Request in ASP.NET从 ASP.NET 中的 POST 请求中获取用户身份
【发布时间】:2015-06-02 20:06:21
【问题描述】:

所以我的 ASP.NET 站点托管在 Intranet 上。我需要做的一件事是,如果他们试图通过我设置的简单 API 进行 POST 请求,则能够获取该人的活动目录用户名。

目前我对自己的设置感到非常困惑。在我的 web.config 中,我有以下内容:<authentication mode="Windows" />

在我的 applicationhost.config 我有这个:

            <authentication>

            <anonymousAuthentication enabled="true" userName="" />

            <basicAuthentication enabled="false" />

            <clientCertificateMappingAuthentication enabled="false" />

            <digestAuthentication enabled="false" />

            <windowsAuthentication enabled="true">
                <providers>
                    <add value="Negotiate" />
                    <add value="NTLM" />
                </providers>
            </windowsAuthentication>

            <iisClientCertificateMappingAuthentication enabled="false">
            </iisClientCertificateMappingAuthentication>

        </authentication>

但是,如果我关闭匿名身份验证,它会破坏我通过 python 中的 urllib2 调用的所有 GET 方法,并且我无法访问它们(401 Forbidden)。

我真正想要的是能够做这样的事情:

        string logonName = User.Identity.Name;

只要有对服务器的 POST 请求,然后将该名称与活动目录进行比较,以查看它们是否在具有正确权限的组中进行 POST。目前,如果我对用户名进行硬编码,我就有这个工作,但每当我发送 POST 请求时,它总是进行匿名身份验证并为用户返回""

那么有什么方法可以在我的 ASP.NET 应用程序中获取只是一个用户名(不需要密码)?这应该在 python 端处理,还是有一种简单的方法来配置我的设置来做到这一点,如果是这样,如何?

任何方向都将不胜感激。

【问题讨论】:

    标签: python asp.net iis asp.net-web-api webforms


    【解决方案1】:

    如果您使用的是 Windows 身份验证,那么您应该关闭匿名身份验证。

    如果您在浏览器外部进行 api 调用,例如不是从 jquery 调用,那么它不会将凭据传递给 api 服务器。

    你可以做什么,可能只是关闭windows身份验证,只是将用户名作为api方法的参数传递,你可以使用它来查询AD。

    【讨论】:

    • 这是我认为我必须要做的。我会尝试这个,直到出现更好的解决方案。谢谢。
    • 请注意,这将使身份验证不再安全,因为仅用户名不是安全令牌。也许如果您为此设置应用程序密码并让您的phyton将用户名和密码传递给api会更有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多