如何使用表单身份验证获取Windows用户凭据?

时间:2018-08-29 11:20:44

标签: c#

我们所有的库和应用程序都使用表单身份验证,因此有必要在此处使用它。

该应用程序通过以下设置托管在IIS上:

  • 匿名身份验证:已启用
  • 表单身份验证:已启用
  • Windows身份验证:已禁用(不得更改)

    这将使用户在IIS下运行(在我的情况下为IIS APPPOOL\tdm

    string userName = System.Security.Principal.WindowsIdentity.GetCurrent();
    string userName = Environment.UserName;
    

    在web.config中:

    <authentication mode="None" /> //(this again must not be changed)
    

    是否可以通过某种方式获取使用该应用程序的用户的Windows凭据? 我的工作是当有人进入应用程序以自动使用此凭据登录时,为此,我必须找到一种方法来获取他的Windows用户帐户。

  • 1 个答案:

    答案 0 :(得分:3)

    我认为您所要求的在标准Webforms框架内是不可能的。如果不启用Windows身份验证,就无法自动使浏览器发送Windows凭据。

    如果应用程序托管在同一域中,则使用具有现有AD用户名/密码(也称为“单一登录”)的标准表单身份验证相对容易。

    在应用程序中启用Windows身份验证,然后从浏览器发出请求时,它实际上会返回401 - Unauthorized状态代码。然后,浏览器根据您的设置决定是否在第二个请求中发送您的身份。这可能会自动发生,或者可能提示您输入凭据。