geschrieben von:
mozart (---.pool.einsundeins.de)
Hier mal als Inspiration meine Funktion. Diese Basiert allerdings auf einer (alle 30 min. synchronisierten) Tabelle mit Usernamen (und dem DN dazu)
Hier wird ein Novell edirectory angeprochen somit müsstest du den Rückgabewert evtl. verändern (6) - ich weis nicht was ein AD als korrekten wert zurückliefert.
CREATE OR REPLACE FUNCTION "Helper"."IS_MEMBER"
(P_USERNAME VARCHAR2, ldap_group varchar2) RETURN BOOLEAN IS
Username VARCHAR2(256) ;
LD DBMS_LDAP.session;
attr VARCHAR2(256);
St PLS_INTEGER;
CURSOR C_A IS
SELECT DN FROM VIEW_USERNAME
WHERE Upper(CN)=upper(P_USERNAME);
BEGIN
OPEN C_A;
FETCH C_A INTO username;
ld:= DBMS_LDAP.init('ldapserver','389');
st:= DBMS_LDAP.compare_s (ld,ldap_group,'member',username);
If st = '6'
then return true;
else return false;
end if;
CLOSE C_A;
EXCEPTION
WHEN others THEN
RETURN false;
CLOSE C_A;
END;
Gruß
mozart <[a]> htmldb.de