powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX_LDAP.GET_ALL_USER_ATTRIBUTES
11 сообщений из 11, страница 1 из 1
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37135468
Chumka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь использовать функцию из хелпа APEX_LDAP.GET_ALL_USER_ATTRIBUTES.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 DECLARE
    L_ATTRIBUTES       wwv_flow_global.vc_arr2;
    L_ATTRIBUTE_VALUES wwv_flow_global.vc_arr2;
BEGIN
    APEX_LDAP.GET_ALL_USER_ATTRIBUTES(
        p_username         => 'uid=чxx,ou=xxx,dc=xxxx,dc=xxx',
        p_pass             => 'pass',
        p_auth_base        => 'ou=xxx,dc=xxx,dc=xxx',
        p_host             => 'xxx',
        p_port             => '389',
        p_attributes       => L_ATTRIBUTES,
        p_attribute_values => L_ATTRIBUTE_VALUES);
 
     FOR i IN L_ATTRIBUTES.FIRST..L_ATTRIBUTES.LAST LOOP
         htp.p('attribute name: '||L_ATTRIBUTES(i));
         htp.p('attribute value: '||L_ATTRIBUTE_VALUES(i));
     END LOOP;
END;

Ошибку выдает следующию:
ORA-31202: DBMS_LDAP: LDAP client/server error: Invalid credentials

Версия апекса - 4.0. Ldap - классический.

Проблема в имени пользователя. В каком виде его записывать в p_username? В хелпе стоит firstname.lastname. Не писать же их по русски. Хотя все равно не получается.

Авторизация проходит успешна. DN string при авторизации cn=%ldap_users%,ou=xxx,dc=xxx,dc=xxx .

Прошу знатоков Апекса помочь.
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37135489
Chumka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще вопрос. Возможно ли как нибудь получать всех пользователей и их атрибуты кроме как через эту процедурку?
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37138731
Chumka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никто не пробовал? Никто не знает?
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37139707
Фотография J.d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chumka,

а че за пользователь у тебя - доменный?
скажи я у себя попробую - че выдаст.
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37143166
Chumka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
J.d

Конечно доменный. С правами на просмотр всей ветки Users в Ldap.
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37157500
lZy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lZy
Гость
У меня возникла похожая проблема, связанная как раз с функцией APEX_LDAP.GET_ALL_USER_ATTRIBUTES.
Аутентификацию я прохожу. Но у меня не получается получить атрибуты пользователя, который прошел аутентификацию.
Получаю ошибку ORA-31202: DBMS_LDAP: LDAP client/server error: No such object

Кто-нибудь сталкивался с похожей ситуацие? Или есть мысли как это можно вылечить?
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37157535
Chumka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lZy ,

А имя пользователя в функции ты какое использовал?
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37157600
lZy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lZy
Гость
Тот же пользователь, под которым прошла успешная аутентификация при входе в приложение.
Мне нужно получить значение определенного параметра с сервера, чтобы наложить фильтр на запрос, по которому формируется отчет.
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37157613
lZy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lZy
Гость
пробовала использовать функцию APEX_LDAP.GET_USER_ATTRIBUTES. В качестве параметра p_attributes передаю имя нужного мне атрибута, но ситуация никак не меняется.
Кусок кода:
v$l_attributes(1) := p$mode;
APEX_LDAP.GET_USER_ATTRIBUTES(
p_username => p$name
,p_pass => p$pswd
,p_auth_base => p$dn
,p_host => p$host
,p_port => p$port
,p_attributes => v$l_attributes
,p_attribute_values => v$l_attribute_values);

Все парамтры задаю как описано в доке APIReference для 4ой версии apex'а.
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37164967
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как раз вчера начал мучать такую же проблему как в первом посте,
он формирует в результат cn= + username + p_auth_base,
если задать скажем:
авторp_username => 'yyy',
p_auth_base => 'ou=xxx,dc=xxx,dc=xxx',
он формирует cn=yyy,ou=xxx,dc=xxx,dc=xxx , тогда как нужна uid=yyy,ou=xxx,dc=xxx,dc=xxx
Судя по прочитанному на oracle otn forum не лечится, буду мучить дальше DBMS_LDAP пакет и др.
...
Рейтинг: 0 / 0
APEX_LDAP.GET_ALL_USER_ATTRIBUTES
    #37165207
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
upd: В общем кому не нравится как он формирует DN из username и auth_base используем DBMS_LDAP пакет.
Лишних 50 строчек, но зато всё отлично работает, тока что протестировал, в моей задаче нужно было произвести точный поиск по одному атребуту и вернуть другой, вот код:

Код: plaintext
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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
declare
  l_attrs DBMS_LDAP.string_collection;
  l_message DBMS_LDAP.message;
  l_entry DBMS_LDAP.message;
  l_attr_name VARCHAR2( 256 );
  l_ber_element DBMS_LDAP.ber_element;
  l_vals DBMS_LDAP.string_collection;

  l_retval PLS_INTEGER;
  l_session DBMS_LDAP.session;

  ldap_host VARCHAR2( 256 ) := 'xxxxxxxx';
  ldap_port VARCHAR2( 256 ) := '389';
  ldap_user VARCHAR2( 256 ) := 'uid=xxxxxx,ou=xxxx,dc=xxx,dc=xx';
  ldap_passwd VARCHAR2( 256 ) := 'xxxxxx';
  ldap_base VARCHAR2( 256 ) := 'ou=xxxx,dc=xxx,dc=xx';
  ldap_filter VARCHAR2( 256 ) := '(cn=Иванов Иван Иванович)';

BEGIN
  DBMS_LDAP.USE_EXCEPTION := TRUE;
  l_session := DBMS_LDAP.init(ldap_host,ldap_port);
  l_retval := DBMS_LDAP.simple_bind_s(l_session, ldap_user, ldap_passwd);

  -- Get all attributes
  l_attrs( 1 ) := 'cn'; -- retrieve attributes 
  l_attrs( 2 ) := 'mail'; 

  l_retval := DBMS_LDAP.search_s(ld => l_session, 
                                 base => ldap_base, 
                                 scope => DBMS_LDAP.SCOPE_ONELEVEL,
                                 filter => ldap_filter,
                                 attrs => l_attrs,
                                 attronly =>  0 ,
                                 res => l_message);

  dbms_output.put_line(DBMS_LDAP.count_entries(ld => l_session, msg => l_message));
  IF DBMS_LDAP.count_entries(ld => l_session, msg => l_message) >  0  THEN

    -- Get all the entries returned by our search.
    l_entry := DBMS_LDAP.first_entry(ld => l_session,msg => l_message);
    WHILE l_entry IS NOT NULL LOOP

      -- Get all the attributes for this entry.
      l_attr_name := DBMS_LDAP.first_attribute( ld => l_session,
                                                ldapentry => l_entry,
                                                ber_elem => l_ber_element);
      WHILE l_attr_name IS NOT NULL LOOP
        
        -- Get all the values for this attribute.
        l_vals := DBMS_LDAP.get_values ( ld => l_session,
                                         ldapentry => l_entry,
                                         attr => l_attr_name );

        FOR i IN l_vals.FIRST .. l_vals.LAST LOOP
        
          dbms_output.put_line(l_vals(i));
          dbms_output.put_line('true');
          return ;
        END LOOP values_loop;
      
        l_attr_name := DBMS_LDAP.next_attribute( ld => l_session,
                                                 ldapentry => l_entry,
                                                 ber_elem => l_ber_element );
      END LOOP attibutes_loop;
    
      l_entry := DBMS_LDAP.next_entry(ld => l_session,msg => l_entry);
    END LOOP entry_loop;
  END IF;

  dbms_output.put_line('false');
END;
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX_LDAP.GET_ALL_USER_ATTRIBUTES
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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