【问题标题】:custom membership with existing aspnet Role provider?与现有 aspnet 角色提供程序的自定义成员资格?
【发布时间】:2014-01-29 15:39:32
【问题描述】:

我们目前有一个应用程序已经投入生产了几年,它是使用 .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>

【问题讨论】:

  • 当然,您应该能够编写自定义会员提供程序。这本质上是提供程序背后的原因,作为一种可以被不同实现替换的抽象。

标签: c# asp.net


【解决方案1】:

现有的活动目录成员资格提供者应该很好

http://msdn.microsoft.com/pl-pl/library/system.web.security.activedirectorymembershipprovider(v=vs.110).aspx

至于角色,据我所知,没有内置的 AD 角色提供程序,但有一个旨在创建它的项目:

http://adrp.codeplex.com

另一种方法是切换到联​​合身份验证。这仍然使您不需要对代码进行任何更改,除了登录部分,但好处是您可以对多个应用程序进行单点登录,其中一些甚至不必是基于 .net 的。这意味着用户只登录一次,身份验证流程将用户信息(包括角色)传递给请求应用程序。

如果您决定遵循这一点,请阅读 ADFS2.0 和基于声明的安全性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多