powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring LDAP + kerio
23 сообщений из 23, страница 1 из 1
Spring LDAP + kerio
    #39201688
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На предприятии пользователи получают доступ к интернету через kerio
Есть некий АРМ (локальный в сети компании) в котором есть форма Spring LDAP /
вот пример : https://spring.io/guides/gs/authenticating-ldap/


форма авторизации избыточна - в браузере пользователь и так уже залогинен ...

как получить его роли из LDAP (или через kerio ) сразу без формы , ведь он уже авторизован?

что то не могу понять ? Помогите !

Ведь ему нет необходимости вводить логин и пароль еще раз ?! так ведь?!

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    @Bean
    public ActiveDirectoryLdapAuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
        ActiveDirectoryLdapAuthenticationProvider activeDirectoryLdapAuthenticationProvider
                = new ActiveDirectoryLdapAuthenticationProvider(env.getRequiredProperty("ldap.domain"), env.getRequiredProperty("ldap.url"));
        activeDirectoryLdapAuthenticationProvider.setConvertSubErrorCodesToExceptions(true);
        activeDirectoryLdapAuthenticationProvider.setUseAuthenticationRequestCredentials(true);
        activeDirectoryLdapAuthenticationProvider.setAuthoritiesMapper(grantedAuthoritiesMapper());

        //activeDirectoryLdapAuthenticationProvider.setUserDetailsContextMapper(userDetailsContextMapper());
        return activeDirectoryLdapAuthenticationProvider;
    }



    @Override
    @Autowired
    @Profile("production")
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        logger.info(TextHelper.hashSignDelimeter(env.getActiveProfiles()));
        if (Arrays.asList(env.getActiveProfiles()).contains("production")) {
            auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider());
        }
    }
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201710
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
он авторизован ГДЕ? в керио? ну да керио кидает браузеру свою куки и по ней понимает что юзеру можно в инет выходить. ну или по айпишнику. какое это отношение имеет к сервлету и его джейсейшнайди? никакого. авторизоваться будешь по-любому.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201839
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2,

spring ldap либа может каким то образом запросить сама - список ролей ?

по текущему пользователю ?

Хочется чтобы работа с АРМом была прозрачной - один раз при открытии браузера ввел логин и пароль и дальше все ресурсы доступны ...
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201841
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще нубовский вопрос :
как получить путь к файлу пропертей ? в рантайме ?




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
@PropertySources({
@PropertySource((name = "arm", value = "file:/etc/jetty9/arm.properties", ignoreResourceNotFound = false)
})
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {


    @Autowired
    protected Environment env;

  @Resource(name = "arm")
    private Properties armProperty;




Что хочу в логи увидеть что мы прочитали именно файл ,который по пути ....

"file:/etc/jetty9/arm.properties"
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201867
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, роли дергает легко.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@ModelAttribute("loggedUser")
    String getLoggedUser(){
        UserDetails user = (UserDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        for(GrantedAuthority gr : user.getAuthorities()){

        System.out.println(gr.getAuthority());
        }
        System.out.println(user.getPassword());
        return user.getUsername();
    }



но залогиниться (сказать сервлету свой логин и пароль) придется по-любому. ну или искать механизм обмена этим с керио. что мне кажется малореальным.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201907
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, Atum1 хочет сделать что-то похожее на Single Sign On.

Kerion заявляет, что они поддерживают интеграцию с ActiveDirectory
Народ в I-net'е уверяет, что Kerio поддерживает NTLM авторизацию.

форма авторизации избыточна - в браузере пользователь и так уже залогинен ...

как получить его роли из LDAP (или через kerio ) сразу без формы , ведь он уже авторизован?

НЕ понятно, в чем же проблема получить его роли из по LDAP
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201915
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
керио у себя просто помечает что этому юзеру (в виде куки или айпишника) сгрантован доступ и всё. дальше что? тебе же цель сервлету сообщить что вот конкретно этому компу (этой куки этому айпишнику) керио дал доступ.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201953
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2керио у себя просто помечает что этому юзеру (в виде куки или айпишника) сгрантован доступ и всё. дальше что? тебе же цель сервлету сообщить что вот конкретно этому компу (этой куки этому айпишнику) керио дал доступ.
Они уверяют, что поддерживают NTLM

Т.ч. чисто теоретически , если два сервера настроены на аутентификацию через NTLM и ActiveDirectory - то пользователю ничего вводить не нужно. Насколько это удобно на практике - не знаю.

Для WebLogic доки по настройке на металинке находил. Но настройкой Single Sign "по серьезному" занимался пару месяцев мой коллега. Но мы заказчику вообще весь стек продуктов Oracle Identity Manager разворачивали и к ActiveDirectory прикручивали.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201975
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2керио у себя просто помечает что этому юзеру (в виде куки или айпишника) сгрантован доступ и всё. дальше что? тебе же цель сервлету сообщить что вот конкретно этому компу (этой куки этому айпишнику) керио дал доступ.

Вообще-то это к Spring-scurity не относится.
Просто нужно в нем указать какие роли имеют доступ к тем или иным ресурсам.
А все остальное это дело сервера приложений.
AOP как никак. ;-)

Т.е. нужно в начале добиться чтобы ваш сервис приложений мог работать с KERIO.
Как только это заработает spring-security заработает тоже.
Иначе придется писать свой модуль безопасности для сервера приложений.

Удачи!
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39201999
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не понимаю роль керио. вы хотите из керио узнать этот юзер (комп логин) уже получил разрешение или нет и всё? типа вот я в керио ввел пароль и мой сервлет знает что я это я. активдайректори НЕ ЗНАЕТ разрешил ли керио доступ тому или иному юзеру или нет. следовательно из активдайректори ты получить ЭТИ сведения не сможешь. а т.к. спринг секурити работает с АД, значит и спринг секурити об этом не узнает. я проблему вижу как то так.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202288
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Дайте пример кода и статью??
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202297
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2,
+1
я думаю, керио работает вообще раньше всех.
Если он по урл фильтрует машину или урл рессурс, то сервлет об этом не узнает. Не его это дело))).
IMHO
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202316
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

Для информации: http://www.kerio.ru/learn-community/developer-zone
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202338
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2да, роли дергает легко.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@ModelAttribute("loggedUser")
    String getLoggedUser(){
        UserDetails user = (UserDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        for(GrantedAuthority gr : user.getAuthorities()){

        System.out.println(gr.getAuthority());
        }
        System.out.println(user.getPassword());
        return user.getUsername();
    }



но залогиниться (сказать сервлету свой логин и пароль) придется по-любому. ну или искать механизм обмена этим с керио. что мне кажется малореальным.

Да так получаю все роли ... через UserDetails - LdapUserDetailsImpl

https://docs.spring.io/spring-security/site/docs/3.2.8.RELEASE/apidocs/org/springframework/security/ldap/userdetails/LdapUserDetailsImpl.html


Да идея такая - зная кто сейчас на сайте (был залогинен через Керио - имея его логин - более чем достаточно !!!!!)

фоном на стороне сервера делаю запрос в AD LDAP от его username

и получаю его Granted Authorities

тест такой :

//Так получаю список всех пользователей ... а хочу к ним список всех ролей ...

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
   @Value("${ldap.url}")
    private String url;

    @Autowired
    private Environment environment;

    @Bean
    LdapContextSource contextSource() {

        LdapContextSource lcs = new LdapContextSource();
        lcs.setUrl(url);
        lcs.setBase("OU=RealUsers,OU=Users,OU=.CompanyRoot,DC=example,DC=com");
        lcs.setUserDn(environment.getRequiredProperty("user"));
        lcs.setPassword(environment.getRequiredProperty("password"));
        lcs.afterPropertiesSet();
        return lcs;

    }

    @Bean
    LdapTemplate ldapTemplate() {
        LdapTemplate ldap = new LdapTemplate(contextSource());
        return ldap;
    }

  @Autowired
    private LdapTemplate ldapTemplate;


    public List getAllPersonNames() {
        return ldapTemplate.search("", "(&(objectCategory=person)(objectClass=user))", (AttributesMapper) (Attributes attrs) -> attrs.get("cn").get());
    }


    @Test
    public void testLdap() {
      getAllPersonNames().forEach(System.out::println);
    }



тут еще вопрос как составить правильно запрос для данного пользователя
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202384
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не понимаю у тебя кто лдап провайдер? активдайректори или что то еще? если ад то там вообще всё просто. и чем тебе узердетайлз не нравится?
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202404
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще что тебе не нравится кроме того что у юзера и так и сяк есть один логин и пароль (в контексте к АД) он с этим логином и на комп логинитсяи в инет и на твою прогу. ну да пароль надо постоянно ввводить. что в этом плохого? это нома имхо. кроме того привязка непосредственно к керио идея так себе. завтра выйдет новая версия керио или они вообще от него откажутся скажем в пользу микротика или циски - будешь свой софт переписывать?

вязать надо с лдап сервером, т.к. он на вершине пирамиды.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202442
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2ну да пароль надо постоянно ввводить.
дак делается для того чтобы машина загрузилась (ввёл доменный пароль) и далее нигде не вводить.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202461
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сервлет узнать может о том кто к нему ломится только лишь по имени машины максимум. следовательно надо через имя машины вытаскивать из ад кто залогинен на нее на данный момент. в юзере по факту эта инфа не хранится. надо ему создавать новый атрибут и в этот атрибут класть имя машины, или в дескрипшн компа при логине юзера пихать инфу кто в комп залогинен. (простой вариант) далее, ты лезешь в сервлет, сервлет берет имя твоего компа и хз как в лдапе ты вынимаешь описание компа по имени хоста с которого лезут и сверяешь с юзером (который сидит в описании компа) можно ли ему попасть на какой-нить урл/ури в сервлете.

как это в спрингсекурити реализовать? хз. наверное можно, но надо смотреть.

узнать кто залогинен на комп средствами ТОЛЬКО лишь браузера насколько я знаю - невозможно.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202465
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202612
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

http://docs.spring.io/autorepo/docs/spring-security-kerberos/1.0.2.BUILD-SNAPSHOT/reference/htmlsingle/

Вот что нашел. Но пока не понятно как это использовать



Ldap раюотает по открвтому каналу. Нет ldaps не настроен да и сам spring на jetty так же не имеет ssl

А автоизация через керио имеет https пусть и бейсик авторизацию но по https

Так что хочется да олин раз авторизававщись получать для текущего пользователя его рофли из ldap
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202615
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123lor2ну да пароль надо постоянно ввводить.
дак делается для того чтобы машина загрузилась (ввёл доменный пароль) и далее нигде не вводить.

Да именно так и хочется вот есть. В сети ресурс и нужен сотркднику на него доступ. Он открыл урл в локальной сети и ему показывается все что есть у него в ролях

Все прозрачно


Но как такое создать?
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202673
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Petro123пропущено...

дак делается для того чтобы машина загрузилась (ввёл доменный пароль) и далее нигде не вводить.

Да именно так и хочется вот есть. В сети ресурс и нужен сотркднику на него доступ. Он открыл урл в локальной сети и ему показывается все что есть у него в ролях

Все прозрачно


Но как такое создать?

Еще раз:
Это не работа spring, это работа сервера приложений и/или веб-сервера.
Может сервер приложений в NTLM.
Будет все прозрачно.
Не может... Придется писать свою имплементацию.
Да еще надо чтобы и браузер мог в NTLM.
Вроде бы все актуальные браузеры могут, но я могу ошибаться.
Т.к. фичи "впиливаются" и "выпиливаются" очень быстро.
...
Рейтинг: 0 / 0
Spring LDAP + kerio
    #39202675
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring LDAP + kerio
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]