Spec-Zone .ru
спецификации, руководства, описания, API
|
LDAP v3 протокол использует SASL, чтобы поддерживать сменную аутентификацию. Это означает, что клиент и сервер LDAP может быть сконфигурирован, чтобы согласовать и использовать возможно нестандартные и/или специализированные механизмы для аутентификации, в зависимости от уровня защиты, требуемого клиентом и сервером. LDAP v2 протокол не поддерживает SASL.
Несколько механизмов SASL в настоящий момент определяются:
Из механизмов в предыдущем списке, популярные серверы LDAP (такие как те от Oracle, OpenLDAP, и Microsoft) Внешняя поддержка, Обзор-MD5, и Kerberos V5.
Вот a simple program
для того, чтобы узнать список механизмов SASL, которые поддерживает сервер LDAP.
// Create initial context DirContext ctx = new InitialDirContext(); // Read supportedSASLMechanisms from root DSE Attributes attrs = ctx.getAttributes( "ldap://localhost:389", new String[]{"supportedSASLMechanisms"});
Вот вывод, произведенный, выполняя эту программу против сервера, который поддерживает Внешний механизм SASL.
{supportedsaslmechanisms=supportedSASLMechanisms: EXTERNAL, GSSAPI, DIGEST-MD5}
Чтобы использовать определенный механизм SASL, Вы определяете его Комитет по цифровым адресам в интернете (IANA) - зарегистрированное имя механизма в свойстве среды Context.SECURITY_AUTHENTICATION. Можно также определить список механизмов для провайдера LDAP, чтобы попробовать. Это делается, определяя упорядоченный список разделенных пробелом имен механизма. Провайдер LDAP будет использовать первый механизм, для которого он находит реализацию.
Вот пример, который просит, чтобы провайдер LDAP попытался получить реализацию для механизма ОБЗОРА-MD5 и если это не доступно, используйте тот для GSSAPI.
env.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5 GSSAPI");
Вы могли бы получить этот список механизмов аутентификации от пользователя Вашего приложения. Или Вы могли бы получить это, спрашивая сервер LDAP через вызов, подобный показанному ранее. Провайдер сам LDAP не консультируется с сервером для этой информации. Это просто пытается определить местоположение и использовать реализацию указанных механизмов.
У провайдера LDAP в платформе есть встроенная поддержка Внешнего, Обзора-MD5, и GSSAPI (Kerberos v5) механизмы SASL. Можно добавить поддержку дополнительных механизмов.
Некоторые механизмы, такой как Внешний, не требуют никакого дополнительного ввода - одно только имя механизма достаточно для аутентификации, чтобы продолжиться.
Большинство других механизмов требует некоторого дополнительного ввода. В зависимости от механизма мог бы измениться тип ввода. Следующее является некоторыми общими вводами, требуемыми механизмами.
Идентификаторы аутентификации и авторизации могли бы отличаться, если программа (такая как прокси-сервер) аутентифицирует от имени другого объекта. Идентификатор аутентификации определяется при использовании свойства среды Context.SECURITY_PRINCIPAL. Это имеет тип java.lang.String.
Пароль/ключ идентификатора аутентификации определяется при использовании свойства среды
Если свойство "java.naming.security.sasl.authorizationId" было установлено, то его значение используется в качестве ID авторизации. Его значение должно иметь тип java.lang.String. По умолчанию пустая строка используется в качестве ID авторизации, который направляет сервер, чтобы получить ID авторизации из учетных данных аутентификации клиента.
Если механизм требует ввода кроме уже описанных, то Вы должны определить объект обратного вызова для механизма, чтобы использовать, можно проверить пример обратного вызова в Учебном руководстве JNDI. Следующая часть этого урока обсуждает, как использовать механизм аутентификации Обзора-MD5 SASL.