2016-03-04 3 views
1

Я пытаюсь интегрировать аутентификацию LDAP с Граалей 3. По существу, вот что я должен сделать:Grails 3 и LDAP Authentication

enter image description here

Когда конкретный путь вызывается, я хочу, чтобы убедиться, что пользователь является частью правой «группы» в каталоге.

Чтобы это сделать, я сконфигурировал файл server.xml tomcat, чтобы включить область jndi.

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99" 
    connectionName="cn=angryIp,ou=People,o=cools,dc=mains,dc=com" 
    connectionPassword="angryIp" 
    connectionURL="ldap://localhost:10389" 
    userPattern="cn={0},ou=People,o=cools,dc=mains,dc=com" 
    roleBase="ou=Groups,o=cools,dc=mains,dc=com" 
    roleName="cn" 
    roleSearch="uniqueMember={1}" 
/> 

У меня есть настроенная версия студия каталогов apache, и я могу запросить и вернуть результаты. (Другими словами, приведенная выше конфигурация до сих пор верна)

Чтобы это сделать, мне нужно добавить ограничения безопасности в файле web.xml. Тем не менее, grails 3 больше не поддерживает использование web.xml. (Я даже создал файл web.xml, который был помещен в директорию src/main/webapp/WEB-INF, так как некоторые рекомендуются для предыдущих версий, но приложение становится undeployable). Это создает для меня проблему, так как все Учебники предполагают, что мы можем создать этот файл.

Я также рассмотрел документацию grails 3 для использования ldap в файле application.yml, но проблема, которую я здесь имею, заключается в том, что требуются параметры соединения. Пример: строка ldap ip, имя пользователя, пароль и т. Д. Хотя я знаю эти данные для своего локального env, файл войны будет развернут для многих клиентов, и я не знаю их IP.

Таким образом, проблема/вопрос у меня есть, что:

а) Поскольку Grails 3 не имеет файл web.xml, как я могу настроить те же атрибуты программно? Хотя это и ужасно для администраторов сервера, и на самом деле дает мне небольшую выгоду.

b) Есть ли альтернатива статически типизированным IP-адресам для конфигурации ldap в application.yml?

+0

Вы пробовали использовать Spring Security Core Plugin для Grails и LDAP Plugin? –

+0

из документации, которую я видел до сих пор, обе из них требуют, чтобы connectionUrl был известен заранее. Я этого не знаю. Я надеялся использовать ldap с jndi, чтобы он мог легко меняться клиентом. – angryip

ответ

0

Конфигурация Grails и большинства плагинов Grails может быть нарушена. Если вы внедрите файл application.groovy или файл application.yml, вы можете легко настроить конфигурацию в разных системах.

Есть много примеров, как сделать это на Grails 3. Один из них находится здесь: http://grails.1312388.n4.nabble.com/Grails-3-External-config-td4658823.html

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

+1

Я ценю отзывы, но я не вижу, как это применимо. Во-первых, некоторые из внешних файлов требуют вызова основного метода Applications.groovy. Я считаю, что это для встроенного tomcat, который, конечно же, не является нашим производством. Далее, из документов, которые я прочитал, когда вы выдаете команду: dev war, независимо от того, какой файл вы используете для форматирования конфигурации, он введет эти свойства в войну. Очевидно, я не хочу этого. Мне нужен динамический подход, который предоставляет jndi. Не могли бы вы уточнить или предоставить код относительно того, как ваш подход решает проблему? – angryip

+0

Если вы используете Spring Security LDAP, вы можете установить параметр «grails.plugin.springsecurity.ldap.context.server» во внешней конфигурации, отличный от каждой среды.Этот параметр используется для указания хоста/IP сервера. Есть много других опций с префиксом 'grails.plugin.springsecurity.ldap.context', чтобы установить все другие вещи. Я не понимаю, что вы подразумеваете под встроенным tomcat. Внешняя конфигурация не находится в состоянии войны, она находится в файловой системе сервера, на котором установлено приложение на – droggo

+1

. Я думаю, вы ссылаетесь на это: http://stackoverflow.com/questions/13561127/how-can-update-external -config-files-without-rebuild-war-file-in-grails, а затем добавьте файл grails.plugin.springsecurity.ldap.context.server. Я просто не уверен, насколько это выгодно. Хотя да, я могу экрнализировать файл, теперь я застрял в работе с его обслуживанием ... Было бы намного лучше imo, если бы был файл web.xml, потому что тогда я могу легко перейти к нему в моем каталоге развертывания (webapps в tomcat) и внести необходимые изменения – angryip

Смежные вопросы