OID - Oracle Identity Manager

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

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:

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!

Amministrazione OID

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:

Installazione

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".

Configurazioni particolari

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...

Comandi LDAP

Vediamo i comandi di base:

Per tutti questi comandi (ad esclusione della search, ma non sempre) devi essere bindato, ovverossia da linea di comando (o se da applicazione prima di eseguire il comando) devi avere fatto una operazioni di Bind.

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" description
restituira' solo l'attributo description per Mario Rossi (senza l'ultimo parametro riporta tutto)
invece:
ldapsearch -b ou=dipendenti,ou=fiat.com,o=fiat_grougroup -D "ammistratore ldap" -w "Password amministratore" "cn=Mario Rossi" description
fa la stesa cosa ma con il bind (in questo caso amministratore)
La sintassi pero' cambia da ldap ad ldap: questa va bene per openldap, dove se metti la W maiuscola ti chiede la password anziche' doverla dare via command line; su taluni ldap, che hanno SASL installato, devi dare l'opzione "-x" per fare - come abbiamo fatto - il cosiddetto "simple bind"

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