Autor Téma: LDAP overeni uzivatele  (Přečteno 1136 krát)

Radek

  • Host
LDAP overeni uzivatele
« kdy: 30-07-2012, 08:09:36 »
Ahoj všem,
hledám nějaké řešení toho, jak ověřit uživatele vůči LDAP serveru z Delphi aplikace?

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1412
  • Karma: 34
    • Pepak.net
Re:LDAP overeni uzivatele
« Odpověď #1 kdy: 30-07-2012, 08:37:28 »
No, napůl snadno a napůl blbě :-)

Snadno v tom smyslu, že se dá celkem snadno najít vhodná knihovna, která to za tebe udělá. Já třeba používám WinLDAP, což je víceméně jen cčkový header soubor k Windowsovskému API přeložený do Pascalu, a jde to docela dobře.

Blbě v tom smyslu, že mi není znám žádný univerzální způsob, jak uživatele autentizovat. Asi nejblíž k univerzálnosti má to, použít uživatelské jméno a heslo k přihlášení do LDAPu, ale ani to nemusí vždy fungovat (některé instalace mají jeden účet pro čtení dat z LDAPu, a autentizaci pak dělají jinak). Pokud ovšem budeš chtít z toho LDAPu i nějakou jinou informaci než "ano, uživatel XYZ s heslem 123 má u nás účet", tak narazíš na to, že LDAP je tak univerzální, že napsat login, který by fungoval se všemi instalacemi, je pěkný humus. Já například za tím účelem mám v konfiguraci nejen adresu serveru (bez té by to asi nešlo ani u lepších způsobů autentizace), pattern pro uživatele (protože to, že se mi uživatel do aplikace hlásí jako PEPAK, je mi pro LDAP dost houby platné, tam potřebuju jako login něco jako dc=cz,dc=domena,dc=skupina,ou=PEPAK), kořen hledání a dotaz v dotazovacím jazyku LDAPu (abych našel požadovanou informaci, v tomto případě položku s právy uživatele) a ještě několik dalších pomocných údajů, abych to měl aspoň plus mínus univerzální. Ovšem vyplnit ty údaje je práce pro speciálně proškoleného člověka, ne pro uživatele, který si stáhnul a nainstaloval aplikaci a teď ji chce připojit ke svému autentizačnímu serveru...

Pokud existuje i lepší řešení, rád se ho dozvím, ale na mě celý LDAP dělá dojem, že sice existuje univerzální komunikační protokol, ale pro konkrétní použití vůči konkrétnímu serveru stejně musím napsat velkou většinu kódu znovu...