Использование учетных данных SharePoint текущего пользователя для получения доступа к Active Directory - PullRequest
1 голос
/ 23 февраля 2011

Я разрабатываю веб-часть SharePoint 2010 (в C #), которая должна извлекать пользовательские данные из Active Directory, но у меня возникают проблемы с использованием учетных данных текущего пользователя SharePoint для аутентификации в AD.Я использую класс DirectoryEntry для получения данных из AD, и он отлично работает, когда я жестко кодирую некоторые учетные данные, но я знаю, что это плохая практика, поэтому я хочу избежать этого.Я пробовал несколько разных вещей, таких как:

new DirectoryEntry("LDAP://" + dc, null, null, AuthenticationTypes.ServerBind | AuthenticationTypes.FastBind);

и

new DirectoryEntry("LDAP://" + dc, null, null, AuthenticationTypes.Secure);

, но все они просто генерируют исключения.Я действительно не знаю, что они делают, но это то, что мне удалось найти в Интернете.

Любая помощь, которая может направить меня в правильном направлении, будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Возможно, вы столкнулись с печально известной проблемой двойного прыжка. Сервер Sharepoint не может автоматически аутентифицироваться как вы на другом сервере, даже в том же домене. Google 'двойной прыжок' для получения дополнительной информации о проблеме.

Есть несколько вариантов для выполнения того, что вы хотите:

  1. Службу Secure Store в Sharepoint 2010 можно использовать для хранения необходимого имени пользователя / пароля для подключения к AD, либо одного имени пользователя / пароля, общего для всех пользователей Sharepoint (аналогично # 2 ниже), либо имени пользователя / пароль для каждого пользователя Sharepoint (аналогично # 3 ниже).

  2. Вы можете настроить учетную запись AD с правами доступа только для чтения к AD, а затем создать некоторые свойства веб-части для хранения имени пользователя и пароля пользователя. Настройте свойства так, чтобы они были общими для всех пользователей и устанавливались администратором. Используйте сохраненные имя пользователя / пароль при подключении к AD. Установите свойство пароля так, чтобы оно было доступно только для записи со стороны пользовательского интерфейса.

  3. Если для каждого пользователя важно видеть различный набор данных AD, основанный на разрешениях пользователя в AD, вы можете сделать что-то похожее на описанное выше, но не делите свойства имени пользователя / пароля общими.

  4. Настройте Kerberos для своей среды Sharepoint, что позволит веб-серверу sharepoint аутентифицироваться как вы в AD без необходимости сохранять свои учетные данные

  5. Настройка AD для обеспечения анонимного доступа для чтения (вероятно, не из-за соображений безопасности)

0 голосов
/ 23 февраля 2011

Я использую этот код для подключения к AD с текущим пользователем:

    using (DirectoryEntry entry = new DirectoryEntry())
    {
        using (DirectorySearcher searcher = new DirectorySearcher(entry))
        {
            searcher.Filter = "yourSearchQuery";
            searcher.PropertiesToLoad.Add("yourProperty1");
            searcher.PropertiesToLoad.Add("yourProperty2");

            using (SearchResultCollection results = searcher.FindAll())
            {
                foreach (SearchResult result in results)
                {
                    using (DirectoryEntry resultEntry = result.GetDirectoryEntry())
                    {
                        PropertyValueCollection valuesForProperty1 = resultEntry.Properties["yourProperty1"];
                        PropertyValueCollection valuesForProperty2 = resultEntry.Properties["yourProperty2"];

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