OID - Oracle Identity Manager e' il componente dell'architettura di
Oracle Application Server che funge da LDAP Server.
Si tratta di un LDAP Server v.3 standard che ha come caratteristica il
mantenere i dati su un RDBMS Oracle.
L'OID e' il componente fondamentale delle funzionalita' di Identity
Management che comprende anche alcune applicazioni web (eg. OIDDAS) per la
gestione delle utenze e la loro sincronizzazione con eventuali
ambienti esterni.
In questo documento introduttivo sull'OID viene descritto velocemente
il protocollo LDAP e quindi riportate le principali caratteristiche
del prodotto.
LDAP chi era costui?
Allora, fondamentalmente si puo' pensare ad un ldap
(Lightweight Directory Access Protocol) come un database gerarchico
anche se poi di fatto come backend ha un DB relazionale...
ovviamente un Oracle RDBMS per l'OID!
L'organizzazione e’ gerarchica; tipicamente al livello piu’
alto hai una organizzazione (o), seguita da organizational unit (ou), e da
una serie di oggetti, tipicamente user identifier (uid) o canonical names
(cn). Opzionalmente si puo' avere, allo stesso livello dell’organizzazione, un
country (c), ma francamente non l’ho mai visto usare.
Ad esempio:
o=fiat_group (oppure, piu' raro o=fiat_group, c=it) ou=fiat ou=dirigenti ou=funzionari ou=dipendenti cn=Mario Rossi ou=alfa ou=dirigenti ou=funzionari ou=dipendenti cn=Giorgio Bianchi ...Oppure la gerarchia puo' essere costruita con i directory context (dc) che seguono la gerarchia dei domini Internet...
dc=it dc=mycompany cn=users cn=Mario Rossi cn=Giorgio Bianchi ...
Questo secondo esempio e' stato riportato non perche' chiarisca meglio il concetto ma... perche' e' il realm che l'installazione di Oracle Application Server 10g Infrastructure crea per default (se mycompany.it e' il dominio...).
A questo punto introduciamo un po’ di concetti di base:
( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' SUP organizationalPerson STRUCTURAL MAY ( audio $ businessCategory $ carLicense $ departmentNumber $ displayName $ employeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress $ initials $ jpegPhoto $ labeledURI $ mail $ manager $ mobile $ o $ pager $ photo $ roomNumber $ secretary $ uid $ userCertificate $ x500uniqueIdentifier $ preferredLanguage $ userSMIMECertificate $ userPKCS12 ) ) For reference, we list the following additional attribute types that are part of the inetOrgPerson object class. These attribute types are inherited from organizationalPerson (which in turn is derived from the person object class): MUST ( cn $ objectClass $ sn ) MAY ( description $ destinationIndicator $ facsimileTelephoneNumber $ internationaliSDNNumber $ l $ ou $ physicalDeliveryOfficeName $ postalAddress $ postalCode $ postOfficeBox $ preferredDeliveryMethod $ registeredAddress $ seeAlso $ st $ street $ telephoneNumber $ teletexTerminalIdentifier $ telexNumber $ title $ userPassword $ x121Address )
Vediamo ora come si presenta il signor Mario Rossi in una configurazione tipica:
dn: cn=Mario Rossi, ou=dipendenti, ou=fiat, o=fiat_group objectclass: top objectclass: person objectclass: organizational person objectclass: inetorgperson cn: Mario Rossi givenname: Mario (solitamente il nome proprio, quando usato) sn: Rossi (solitamente il cognome surname - , quando usato) uid: Mario Rossi (potresti useare la matricola, ad esempio=000001) description: dipendente ldap modello
Analoga descrizione si hanno per l’organizzazione, per le ou e cosi’ via... Come su Unix tutto e’ visto come un file, con l'LDAP tutto e’ visto come un oggetto definito da un insieme di classi ed attributi.
Altro punto fondamentale e' comprendere che l'LDAP e' un protocollo di rete.
Ogni interrogazione, il bind, ... ogni attivita' viene svolta con messaggi TCP
su porte specifiche. La porta standard per l'LDAP e' la 389, di default
OID viene installato sulla porta 3060.
L'LDAP consente anche connessioni SSL.
Come introduzione basta cosi'... sul sito www.openldap.org e’ spiegato tutto meravigliosamente!
Dal punto di vista di amministrazione del prodotto non vi sono indicazioni particolari. La console dell'Enterprise Manager di OAS permette di gestire ogni aspetto:
Per quanto riguarda invece la gestione del dati contenuti in OID possono essere utilizzati strumenti differenti:
OID - Oracle Identity Manager e' uno dei molteplici componenti dell'ambiente di Oracle Application Server 10g. Di conseguenza l'installazione dell'OID e' semplicemente annegata all'interno dell' istallazione del componente di Infrastruttura di OAS. Note per l'installazione? Nessuna: si tratta di un componente non opzionale e senza configurazioni da indicare durante un'installazione "normale".
Una volta installato OID puo' essere utilizzato immediatamente
e la sua configurazione e' adatta per le normali esigenze di
autenticazione degli utenti.
Configurazioni specifiche si hanno nel caso di installazioni per
sistemi in alta affidabilita'.
Configurazioni complesse si possono avere quando vi e' l'esigenza di allineare LDAP Server differenti. Teoricamente funziona tutto e tutti gli LDAP Server sono uguali pero'... alcuni sono piu' uguali di altri!
Altra possibile complessita' e' l'utilizzo di Realm differenti ovvero della configurazione in VPP di Portal...
Vediamo i comandi di base:
Per quanto riguarda la search, se come spesso succede, l'anonymous bind (cioe' non dai le credenziali) e' abilitato, ti basta fare:
ldapsearch -b ou=dipendenti,ou=fiat.com,o=fiat_group "cn=Mario Rossi" descriptionrestituira' solo l'attributo description per Mario Rossi (senza l'ultimo parametro riporta tutto)
ldapsearch -b ou=dipendenti,ou=fiat.com,o=fiat_grougroup -D "ammistratore ldap" -w "Password amministratore" "cn=Mario Rossi" descriptionfa la stesa cosa ma con il bind (in questo caso amministratore)
In realta' rispetto ai comandi standard con OID vi e' la semplificazione con l'utilizzo del wallet (un portafoglio in cui tenere tutti i certificati). Il wallet puo' essere gestito con l'applicazione X Oracle Wallet Manager: owm.
Naturalmente non e' tutto qui... ecco quindi qualche comando un po' piu' strano ma utile:
ldapcheck oidctl connect=iasdb server=odisrv instance=1 stop oidctl connect=iasdb server=odisrv instance=1 flags="-debug 1 -port 3060" start ldapbind -h infrastructure.dummy.it -p 3060 ldapbind -h infrastructure.dummy.it -p 3060 -D cn=orcladmin -w welcome1 odisrvreg -h infrastructure.dummy.it -p 3060 -D cn=orcladmin -w welcome1 ldapsearch -h infrastructure.dummy 3060 -D "cn=orcladmin" -w welcome1 -L -s sub -b "cn=provisioning profiles,cn=changelog subscriber,cn=oracle internet directory" objectclass=* > prov.ldif # create a file prov_debug.ldif: # dn: orclODIPProfileName=A478..., cn=Provisioning Profiles, cn=Changelog Subscriber, cn=Oracle Internet Directory # changetype: modify # replace: orclodipprofiledebuglevel # orclodipprofiledebuglevel: 63 ldapmodify -p 3060 -h infrastructure.dummy.it -D cn=orcladmin -w welcome1 -v -f prov_debug.ldif
Testo: OID - Oracle Identity Manager
Data: 15 Maggio 2005
Versione: 1.0.1
Autori: Valerio Morozzo & mail@meo.bogliolo.name