移至Server 2016后,MVC Forms身份验证中断不再起作用

时间:2018-08-08 22:08:11

标签: c# ldap forms-authentication windows-server-2016 iis-10

我正在将运行IIS 7.5的Windows Server 2008R2与运行IIS 10的Windows 2016 Server之间进行应用程序传输。该应用程序的登录系统正在使用带有LDAP的表单身份验证,以允许用户登录并进行更改。用户可以在2008R2服务器上登录而没有任何问题,从而创建了必要的cookie以供使用。但是,在2016 Server上,登录系统身份验证似乎已中断。似乎已创建了cookie,但是在创建cookie之后,系统似乎无法找到用户。此外,在不运行任何登录过程的特定页面上,该应用程序似乎正在使用Windows身份验证,而不是显式地告知要使用的窗体身份验证。 web.config中应用程序的设置专门告诉它使用表单而不是Windows身份验证。

应用程序的web.config包含以下有关连接字符串的信息:

<connectionStrings>
<add name="ADConnectionString" connectionString="LDAP://OURLDAPSYSTEM"/>
</connectionStrings>

此系统的LDAP项目仅用于验证,不用于权限。

以及身份验证和成员身份:

<system.web>
  <authentication mode="Forms">
    <forms name=".ADAuthCookie" loginUrl="~/" timeout="60" slidingExpiration="true" protection="All"/>
  </authentication>
  <membership defaultProvider="ADMembershipProvider">
    <providers>
      <add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName"/>
    </providers>
  </membership>
</system.web>

在执行登录过程的控制器中:

userLoginSuccess = Membership.ValidateUser(model.UserName, model.Password);
//Make call to another DB to check permissions for usage
FormsAuthentication.SetAuthCookie(model.UserName, true);

在服务器上的IIS上,应用程序的身份验证显示如下: Authentication for the application

整个网站的身份验证显示如下:Authentication for the Site

每个匹配Windows 2008R2服务器上已经存在的内容。

任何人都不知道Windows 2016服务器上将进行哪些更改以阻止身份验证与2008R2相同的工作?如果是这样,我将如何解决此问题?

0 个答案:

没有答案