Делает Систему. DirectoryServices. DirectoryEntry содержат конструктора, который на самом деле использует “domain\username” с Ldap?

Не совсем верный.

самый большой "глюк" вводит - C++ намного более со строгим контролем типов, чем C, и предпочтительные методы для решения, это в C++ просто не доступно в C. А именно, можно тихо бросить между типами в C (особенно типы указателей), но не в C++. И C++ высоко рекомендует использовать static_cast/reinterpret_cast/const_cast методы для того, чтобы решить эти вопросы.

, Что еще более важно, если Вы изучаете синтаксис C++ и манерности, Вы, вероятно, найдете трудным иметь дело с C (некоторые могут сказать, что это хорошо; и я предпочитаю C++ сам, но иногда это просто не опция, или необходимо иметь дело с унаследованным кодом, это находится в C и не C++). Снова, наиболее вероятные проблемы, с которыми Вы встретитесь, имеют дело с указателями (и общее использование массива особенно символьного *; в C++ с помощью станд.:: строка и станд.:: вектор или другие наборы просто лучше ).

, конечно, возможно изучить C++, и затем изучить различия между C и C++ и быть способным к программированию в обоих. Но различия намного больше, чем просто кожа глубоко.

8
задан John Lewin 16 October 2009 в 14:01
поделиться

2 ответа

Как говорится в сообщении, для установки Java на Mac вам нужно перейти на Apple, а не на Sun. Насколько мне известно, Apple JDK 6 по умолчанию устанавливается в Mac OS X 10.6 (Snow Leopard). Возможно, вам потребуется установить инструменты разработчика с установочного DVD-диска Mac OS X (инструменты разработчика можно установить с DVD-диска с ОС по желанию).

См .: http://developer.apple.com/java/

ПРИМЕЧАНИЕ Этот ответ от 16 октября 2009 г. устарел; вы можете получить JDK для Mac OS X с обычной страницы загрузки JDK на веб-сайте Oracle.

Если доменное имя, указанное в параметре username , недействительно, но пользователь существует в домене, указанном в параметре path , пользователь будет аутентифицирован (с помощью резервного ). Однако, если пользователь существует в другом домене в лесу, чем тот, который указан в параметре path , аутентификация будет успешной, только если доменная часть параметра username включена и верна.

Существует четыре различных способа указания параметра имени пользователя при работе с объектами DirectoryEntry:

  • Отличительное имя (CN = Имя пользователя, CN = Пользователи, DC = домен, DC = local)
  • Имя учетной записи NT (DOMAIN \ Имя пользователя)
  • Обычное имя учетной записи / sAMAccountname (имя пользователя)
  • Основное имя пользователя (обычноusername@domain.local )

Позвольте мне проиллюстрировать это на примере:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.DirectoryServices;

namespace DirectoryTest
{
  class Program
  {

    private static Int32 counter = 1;

    static void Main(string[] args)
    {
      TestConnection();
    }

    private static void TestConnection()
    {
      String domainOne = "LDAP://DC=domain,DC=one";
      String domainOneName = "DOMAINONE";
      String domainOneUser = "onetest";
      String domainOnePass = "testingONE!";

      String domainTwo = "LDAP://DC=domain,DC=two";
      String domainTwoName = "DOMAINTWO";
      String domainTwoUser = "twotest";
      String domainTwoPass = "testingTWO!";

      String invalidDomain = "INVALIDDOMAIN";

      // 1) This works because it's the correct NT Account Name in the same domain:
      Connect(domainOne, domainOneName + "\\" + domainOneUser, domainOnePass);

      // 2) This works because username can be supplied without the domain part
      // (plain username = sAMAccountName):
      Connect(domainOne, domainOneUser, domainOnePass);

      // 3) This works because there's a fall back in DirectoryEntry to drop the domain part
      // and attempt connection using the plain username (sAMAccountName) in (in this case)
      // the forrest root domain:
      Connect(domainOne, invalidDomain + "\\" + domainOneUser, domainOnePass);

      // 4) This works because the forrest is searched for a domain matching domainTwoName:
      Connect(domainOne, domainTwoName + "\\" + domainTwoUser, domainTwoPass);

      // 5) This fails because domainTwoUser is not in the forrest root (domainOne)
      // and because no domain was specified other domains are not searched:
      Connect(domainOne, domainTwoUser, domainTwoPass);

      // 6) This fails as well because the fallback of dropping the domain name and using
      // the plain username fails (there's no domainTwoUser in domainOne):
      Connect(domainOne, invalidDomain + "\\" + domainTwoUser, domainTwoPass);

      // 7) This fails because there's no domainTwoUser in domainOneName:
      Connect(domainOne, domainOneName + "\\" + domainTwoUser, domainTwoPass);

      // 8) This works because there's a domainTwoUser in domainTwoName:
      Connect(domainTwo, domainTwoName + "\\" + domainTwoUser, domainTwoPass);

      // 9) This works because of the fallback to using plain username when connecting
      // to domainTwo with an invalid domain name but using domainTwoUser/Pass:
      Connect(domainTwo, invalidDomain + "\\" + domainTwoUser, domainTwoPass);
    }

    private static void Connect(String path, String username, String password)
    {
      Console.WriteLine(
        "{0}) Path: {1} User: {2} Pass: {3}",
        counter, path, username, password);
      DirectoryEntry de = new DirectoryEntry(path, username, password);
      try
      {
        de.RefreshCache();
        Console.WriteLine("{0} = {1}", username, "Autenticated");
      }
      catch (Exception ex)
      {
        Console.WriteLine("{0} ({1})", ex.Message, username);
      }
      Console.WriteLine();
      counter++;
    }
  }
}

В приведенном выше примере domain.one - это корневой домен forrest, а domain.two находится в том же forrest, что и domain.one (но, естественно, другое дерево ).

Итак, чтобы ответить на ваш вопрос: Аутентификация всегда будет неудачной, если пользователь находится не в том домене, к которому мы подключаемся, и в имени пользователя указано недопустимое доменное имя или нет. параметр.

18
ответ дан 5 December 2019 в 09:26
поделиться

I есть два приложения, которые используют DirectoryEntry (_path, domainAndUsername, pwd); конструктор, а я не нет проблем с аутентификацией. Каждое приложение устанавливается на разных клиентах, у обоих очень (очень) большие доменные структуры.

0
ответ дан 5 December 2019 в 09:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: