2014-01-29 2 views
0

В настоящее время у нас есть приложение, которое находится в производстве в течение нескольких лет, оно было построено с использованием .Net 3.5 и используется поставщиком членства aspnet для обработки аутентификации, создания и управления ролью пользователя. Недавно мы получили запросы на внесение нескольких обновлений для приложения, в процессе которого мы перенесли его в Visual Studio 2013, .NET 4.5. Одно из требований по обновлению заключалось в использовании LDAP нашей компании для аутентификации, возможно ли это? Мы не хотели пересобирать часть аутентификации/авторизации/ролей, можем ли мы оставить часть роли и изменить только элементы аутентификации/автозагрузки? В настоящее время мы имеем следующее в нашем web.configпользовательское членство с существующим поставщиком услуг aspnet?

<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> 
+2

Уверенный, вы должны иметь возможность написать пользовательский поставщик членства. Это, по сути, аргументация, лежащая в основе поставщиков, как абстракция, которая может быть заменена другой реализацией. – David

ответ

1

Существующий поставщик членства в Active Directory должен сделать прекрасный

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

Как для ролей, насколько я знаете, что нет встроенного провайдера роли AD, но был создан проект, целью которого было его создать:

http://adrp.codeplex.com

Другим подходом было бы перейти на федеративную аутентификацию. Это по-прежнему делает невозможным внесение каких-либо изменений в ваш код, за исключением части входа, но выгода заключается в том, что у вас есть единый вход для нескольких приложений, некоторые из которых даже не должны быть .net-based. Это означает, что пользователи регистрируются только один раз, и поток аутентификации передает информацию пользователя, включая роли, запрашивающему приложение.

Если вы решите следовать этому, прочитайте об ADFS2.0 и безопасности на основе утверждений.

Смежные вопросы