我们目前有一个已经投入生产几年的应用程序,它是使用.Net 3.5构建的,并使用aspnet成员资格提供程序来处理用户身份验证,创建和角色管理。最近我们收到了对应用程序进行一些升级的请求,在此过程中我们将其移至Visual Studio 2013,.Net 4.5。要求升级之一是使用我们公司的LDAP进行身份验证,这可能吗?我们不想重建身份验证/授权/角色部分,我们是否可以保留角色部分并仅更改身份验证/授权部分?目前,我们在web.config中有以下内容
<roleManager enabled="true" /> <compilation debug="true" targetFramework="4.5"> <assemblies> ... </assemblies> </compilation> <!-- The <authentication> section enables configuration of the security authentication mode used by ASP.NET to identify an incoming user. --> <authentication mode="Forms"> <forms loginUrl="login.aspx" name=".ASPXFORMSAUTH" protection="All" timeout="30" requireSSL="false" slidingExpiration="true" cookieless="UseCookies" enableCrossAppRedirects="false" defaultUrl="default.aspx" /> </authentication> <authorization> <deny users="?" /> </authorization>
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
<add name="PasswordResetMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
答案 0 :(得分:1)
现有的活动目录成员资格提供程序应该没问题
至于角色,据我所知,没有内置的AD角色提供程序,但有一个项目旨在创建它:
另一种方法是切换到联合身份验证。除了登录部分之外,这仍然使您不需要对代码进行任何更改,但是您可以获得多个应用程序的单点登录,其中一些甚至不必基于.net。这意味着用户只登录一次,并且身份验证流程将用户信息(包括角色)传递给请求的应用程序。
如果您决定这样做,请阅读ADFS2.0和基于声明的安全性。