Когда происходит проверка подлинности ASP.NET? - PullRequest
3 голосов
/ 30 ноября 2010

У меня есть приложение, в котором я отображаю каждую группу Active Directory, к которой принадлежит текущий пользователь. Когда у меня есть мои настройки конфигурации, как это:

    <authentication mode="Windows"/>
    <authorization>
        <deny users="?"/>
        <allow users="*"/>
    </authorization>

Работает нормально. Когда это так:

    <authentication mode="Windows"/>
    <authorization>
        <!--<deny users="?"/>-->
        <allow users="*"/>
    </authorization>

Группы не найдены. Почему это имеет значение? Аутентифицируется ли asp.net только если мы специально отказываем в доступе неаутентифицированным пользователям?

Если это поможет, вот как я получаю группы:

    protected string GetUserGroups()
    {
        StringBuilder userGroups = new StringBuilder();
        ArrayList groupMembers = new ArrayList();
        DirectoryEntry root = new DirectoryEntry("LDAP://myldap/DC=nc,DC=local");
        DirectorySearcher ds = new DirectorySearcher(root);
        ds.Filter = String.Format("(&(samaccountname={0})(objectClass=person))", User.Identity.Name.Substring(User.Identity.Name.LastIndexOf(@"\") + 1));
        ds.PropertiesToLoad.Add("memberof");
        try
        {
            foreach (SearchResult sr in ds.FindAll())
            {
                foreach (string str in sr.Properties["memberof"])
                {
                    string str2 = str.Substring(str.IndexOf("=") + 1, str.IndexOf(",") - str.IndexOf("=") - 1);
                    groupMembers.Add(str2);
                }
            }
        }
        catch
        {
            //ignore if any properties found in AD  
        }
        return String.Join("|", (string[])groupMembers.ToArray(typeof(string)));
    }

1 Ответ

3 голосов
/ 01 декабря 2010

Я могу ошибаться, но я верю, что так оно и есть:

Когда браузер впервые заходит на сайт, он делает это как анонимный.

Если сервер сообщает, что анонимный доступ запрещен, браузер отправляет учетные данные пользователя Windows.

Если эти учетные данные не проходят проверку, браузер открывает окно входа в систему или (в зависимости от приложения) отправляет их на страницу входа.

Итак, поскольку ваш сайт позволяет анонимно, все пользователи приходят таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...