ASP中的windows身份验证.. NET应用程序在IIS中托管后不能正常工作

本文关键字:不能 常工作 工作 身份验证 windows 中的 NET 应用程序 IIS ASP | 更新日期: 2023-09-27 18:08:38

。NET应用程序使用windows身份验证应用程序在我的本地解决方案中工作良好。但是当托管在IIS中时,它要求用户访问托管服务器。它没有从客户端机器获取用户凭据。

下面是我的WEb。配置

<authentication mode="Windows">
        <!--<forms loginUrl="~/Account/Login.aspx" timeout="2880" />-->
</authentication>
<identity impersonate="false" />
<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>
<profile>
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
  </providers>
</profile>
<roleManager enabled="false">
  <providers>
    <clear/>
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>
<httpRuntime maxRequestLength="102400" />

获取用户名的ASP代码如下

string currentUser = HttpContext.Current.User.Identity.Name.ToLower();
                currentUser = currentUser.Replace("kmhp''", "");
                SessionManager.Session.Current.LoggedInUserName = currentUser;
                dsValidateLogin = _grantAccessHandler.ValidateLogin(currentUser);

Thanks in advance

ASP中的windows身份验证.. NET应用程序在IIS中托管后不能正常工作

这可能是客户端配置问题。使用Internet Explorer,您必须确保客户端将IIS服务器识别为内部网区域的一部分。缺省情况下,只有内网区域允许转发用户凭据。IE有一些自动检测机制,但并不总是有效。对于Firefox,您需要将IIS服务器主机名添加到配置值"network.automatic-ntlm-auth"中。可信uri"在about:config中。否则,Firefox也不会将凭据转发到您的服务器。

您很可能需要有客户端凭证。看看下面

<wsHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport" />
   <transport clientCredentialType = "Windows" />
</security>

参考:HttpBinding