2015-09-11 2 views
0

Я делаю простой веб-сайт, чтобы узнать об аутентификации asp.net/AD.ASP.NET Active Directory Авто-вход

Я использовал некоторые фрагменты кода из этого учебника: https://support.microsoft.com/en-us/kb/316748, чтобы успешно использовать AD с аутентификацией форм на странице входа. Я использую эти параметры проверки подлинности IIS для веб-сайта:

Anonymous Authentication -Enabled 
ASP.NET Impersonation  -Disabled 
Basic Authentication  -Disabled 
Digest Authentication  -Disabled 
Forms Authentication  -Enabled 
Windows Authentication  -Disabled 

Я хочу использовать учетные данные для текущего пользователя окон и либо не запрашивать или только подсказать, если он выходит из строя. Когда я меняю режим аутентификации Web.config на «Windows» и параметры IIS, как показано ниже, у него есть всплывающее окно учетных данных, но он просто продолжает запрашивать и никогда не принимает учетные данные.

Anonymous Authentication -Enabled 
ASP.NET Impersonation  -Disabled 
Basic Authentication  -Disabled 
Digest Authentication  -Disabled 
Forms Authentication  -Disabled 
Windows Authentication  -Enabled 

Я пробовал несколько других комбинаций, но все они потерпели неудачу.

Всех файлов на этом сайте, являются:

LdapAuthentication.cs - is in App_Code and is a direct copy/paste from the tutorial 
Logon.aspx - is copy/pasted from the tutorial with the companies LDAP path added 
Default.aspx - is a direct copy/paste from the WebForm1.aspx in the tutorial 
Web.config (shown below) 

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5"> 
     <assemblies> 
     <add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
     </assemblies> 
    </compilation> 
    <httpRuntime targetFramework="4.5" /> 
    <authentication mode="Forms"> <!-- I also tried "Windows" --> 
     <forms loginUrl="logon.aspx" name="adAuthCookie" timeout="10" path="/" /> 
    </authentication> 
    <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
    </authorization> 
    <identity impersonate="true" /> 
    <anonymousIdentification enabled="false" /> 
    </system.web> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    </system.webServer> 
</configuration> 
+0

взгляд на использование 'PrincipalContext' наряду с очень небольшим' AD code' Я использую его в настоящее время, и это спасатель жизни, и если вы хотите просто авто Логин или аутентификации, чтобы позволить пользователю введите веб-страницу, если они находятся в домене. Просто используйте 'PrincipalContext' очень просто сделать только 2-3 строки кода – MethodMan

+1

Попробуйте удалить элемент проверки подлинности форм из вашего web.config, так как вы не будете использовать его со встроенными окнами Аутентификация. – mason

ответ

0

Убедитесь, что IIS имеет право настроен на использование ActiveDirectory Authentication с формами, она работает с локальным сервером из Visual Studio, но не в IIS. В IIS 7+ это учетная запись пула приложений. - Просто создайте новый пул приложений, который запускается под этой учетной записью, и назначьте этот пул приложений вашему приложению/сайту. - Щелкните правой кнопкой мыши на новый пул (пример ASP.NET V4.0 Mypool) -> Дополнительные настройки - В модели процесса выберите LocalSystem as Identity. Web.config:

<system.web> 
<compilation targetFramework="4.0" debug="true"/> 
.......... 
<authentication mode="Forms"> 
     <forms loginUrl="login.aspx" name="adAuthCookie" timeout="10" path="/"/> 
    </authentication>  
    <identity impersonate="false"/> 
    <authorization> 
     <deny users="?"/> 
     <allow users="*"/> 
    </authorization> 
</system.web> 
Смежные вопросы