Spec-Zone .ru
спецификации, руководства, описания, API
След: Именование Java и Интерфейс Каталога
Урок: Усовершенствованные Темы для Пользователей LDAP
Раздел: Безопасность
Обзор-MD5
Домашняя страница > Именование Java и Интерфейс Каталога > Усовершенствованные Темы для Пользователей LDAP

Обзор-MD5

Аутентификация обзора-MD5 является необходимым механизмом аутентификации для LDAP v3 серверы (RFC 2829). Поскольку использование SASL является частью LDAP v3 (RFC 2251), серверы, которые поддерживают только LDAP v2, не поддерживают Обзор-MD5.

Механизм Обзора-MD5 описывается в RFC 2831. Это основано на Дайджест-аутентификации HTTP (RFC 2251). В Обзоре-MD5 сервер LDAP отправляет данные, которые включают различные опции аутентификации, которые это готово поддерживать плюс специальный маркер клиенту LDAP. Клиент отвечает, отправляя зашифрованный ответ, который указывает на опции аутентификации, которые он выбрал. Ответ шифруется таким способом, который доказывает, что клиент знает его пароль. Сервер LDAP тогда дешифрует и проверяет ответ клиента.

Чтобы использовать механизм аутентификации Обзора-MD5, следует установить свойства среды аутентификации следующим образом.

Context.SECURITY_AUTHENTICATION.
Набор к строке "DIGEST-MD5".
Context.SECURITY_PRINCIPAL.
Набор к основному имени. Это - специфичный для сервера формат. Некоторые серверы поддерживают формат идентификатора пользователя входа в систему, такой как это определил для Unix или экранов входа в систему Windows. Другие принимают отличительное имя. Все же другие используют форматы идентификатора авторизации, определенные в RFC 2829. В том RFC имя должно быть или строкой "dn:", сопровождаемый полностью определенным DN объекта, аутентифицируемого, или строкой "u:", сопровождаемый идентификатором пользователя. Некоторые серверы принимают многократные форматы. Примерами некоторых из этих форматов является "cuser", "dn: cn=C. User, ou=NewHires, o=JNDITutorial", и "u: cuser", типом данных этого свойства должен быть java.lang.String.
Context.SECURITY_CREDENTIALS.
Набор к паролю принципала (например, "mysecret"). Это имеет тип java.lang.String, массив char (char[]), или массив byte (byte[]). Если паролем является java.lang.String или char[], то это кодируется при использовании UTF-8 для передачи к серверу. Если паролем является byte[], то он передается, как к серверу.

following example шоу, как клиент выполняет аутентификацию, используя Обзор-MD5 для сервера LDAP.

// Set up the environment for creating the initial context
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

// Authenticate as C. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5");
env.put(Context.SECURITY_PRINCIPAL, 
        "dn:cn=C. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");

// Create the initial context
DirContext ctx = new InitialDirContext(env);

// ... do something useful with ctx

Отметьте: Сервер каталогов Java Sun, v5.2 поддерживает механизм аутентификации Обзора-MD5 для пользователей, у которых есть пароли в виде открытого текста. Следует установить режим шифрования пароля прежде, чем Вы создадите пользователя. Если Вы уже создали пользователя, удаляете это и воссоздаете это. Чтобы установить режим шифрования пароля, используя Консоль администрирования, выберите вкладку Configuration и Узел данных. В области Passwords выберите опцию "No encryption (CLEAR)" для "Шифрования пароля." Сервер принимает простые имена пользователей (то есть, значение атрибута "uid" для записей, у которых есть один), и "dn:" формат имен пользователей. См. документацию сервера для получения дальнейшей информации.

Определение Области

Область определяет пространство имен, из которого выбирается объект аутентификации (значение свойства Context.SECURITY_PRINCIPAL). У сервера могли бы быть многократные области. Например, сервер для университета мог бы быть сконфигурирован, чтобы иметь две области, один для его студенческих пользователей и другого для пользователей способности. Конфигурация области делается администратором каталога. У некоторых каталогов есть значение по умолчанию единственная область. Например, Сервер каталогов Java Sun, v5.2, использует полностью определенное имя узла машины как область значения по умолчанию.

В аутентификации Обзора-MD5 следует аутентифицировать к определенной области. Можно использовать следующее свойство среды аутентификации, чтобы определить область. Если Вы не определите область, то любая из областей, предлагаемых сервером, будет использоваться.

java.naming.security.sasl.realm
Набор к области принципала. Это - специфичная для развертывания и/или специфичная для сервера чувствительная к регистру строка. Это идентифицирует область или домен, из которого должно быть выбрано основное имя (Context.SECURITY_PRINCIPAL). Если эта область не соответствует одну из областей, предлагаемых сервером, то аутентификация перестала работать.

following example шоу, как установить свойства среды для того, чтобы выполнить аутентификацию, используя Обзор-MD5 и указанную область. Чтобы заставить этот пример работать в Вашей среде, следует изменить исходный код так, чтобы значение области отразило то, что было сконфигурировано на Вашем сервере каталогов.

// Authenticate as C. User and password "mysecret" in realm "JNDITutorial"
env.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5");
env.put(Context.SECURITY_PRINCIPAL, 
        "dn:cn=C. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");
env.put("java.naming.security.sasl.realm", "JNDITutorial");

Если Вы должны использовать защиту конфиденциальности и другие свойства SASL, они обсуждаются в Учебном руководстве JNDI.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: SASL
Следующая страница: SSL и Пользовательские Сокеты