从ASP.NET中的POST请求获取用户身份

时间:2015-06-02 20:06:21

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

所以我的ASP.NET站点正在内部网上托管。我需要做的一件事是,如果他们试图通过我设置的简单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端处理还是有一种简单的方法来配置我的设置来执行它,如果是这样,怎么办?

任何方向都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

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