Sun ONE Hints
Virtuelle Attribute: Class of Service (CoS)


Es gibt immer 2 Objekte bei der CoS Definition:

  1. Template Entry:
    In diesem Objekt werden die Attribute mit ihren Werten abgelegt.
  2. CoS Definition Entry:
    In diesem Objekt wird die generelle CoS Defnition abgelegt wie z.B. die Art des Verwendeten CoS und der Verweis auf das Template.
    Es gibt 3 Arten von CoS:
    1. Pointer CoS:
      Hier wird das Template direkt durch die Angabe des DN identifiziert.
    2. Indirect CoS:
      Beim indirekten CoS verweist das Zeilobjekt auf das Template, welches verwendet werden soll.
    3. Classic CoS:
      Beim klassischen CoS werden aufgrund von Informationen, welche in den Zielobjekten vorhanden sind, entschieden, welches Template verwendet wird.


Sonstige Hinweise mit dem Umgang von CoS:

  • CoS definierte Attribute funktionieren nicht in Suchfiltern
  • Wird das Attribut ""userPassword" als CoS definiert, kann sich ein Benutzer nicht damit an den LDAP binden
  • ACIs die als CoS defniert werden, funktionieren nicht
  • Der Server macht kein Schema checking bei CoS Definitionen von "objectclass"
  • Ein CoS generierter "nsRoleDN" kann nicht genutzt werden um Rollen zu generieren
  • Alle CoS Templates müssen lokal sein
  • Per CoS virtuelle Werte können nicht mit echten Werten kombiniert werden. (verwenden von "Multivalued CoS Attributes")
  • "Filtered Rolls" können keine CoS Attribute nutzen
  • Beachten Sie bitte unbedingt die Sun ONE Dokumentation zu Ihrer eingesetzten Version!


Objektklassen:

Alle CoS Objekte haben die Objektklassen:
  • objectClass: LDAPsubentry
  • objectClass: cosSuperDefinition

zusätzliche Objektklasse von den CoS Templates:
  • objectClass: cosTemplate

zusätzliche Objektklasse von "Pointer CoS":
  • objectClass: cosPointerDefinition

zusätzliche Objektklasse von "Indirect CoS":
  • objectClass: cosIndirectDefinition

zusätzliche Objektklasse von "Classic CoS":
  • objectClass: cosClassicDefinition


Beispiele:

Pointer CoS
dn: cn=PointerCoS,dc=siroe,dc=com
objectClass: top
objectClass: LDAPsubentry
objectClass: cosSuperDefinition
objectClass: cosPointerDefinition
cosTemplateDN: cn=siroeUS,cn=data
cosAttribute: postalCode

dn: cn=siroeUS,cn=data
objectClass: top
objectClass: LDAPsubentry
objectClass: extensibleObject
objectClass: cosTemplate
postalCode: 44438

dn: uid=wholiday,ou=people,dc=siroe,dc=com
objectClass: inetOrgPerson
cn: William Holiday
uid: wholiday
postalCode: 44438
Das erste Objekt ist die CoS Definition. Sie verweist mit dem Attribut "cosTemplateDN" direkt auf das zu verwendende Template. Im Attribut "cosAttribute" wird festgelegt, welche Attribute zurückgegeben werden und wie diese zurückgegeben werden (override qualifier s.u.).

Das zweite Objekt ist das CoS Template. Es beinhaltet die eigentlichen Daten, welche zurückgegeben werden.

Das dritte Objekt ist das Zielobjekt für dieses das virtuelle Attribut generiert wird. Wird das Objekt abgefragt, dann bekommt man das Attribut "postalCode" aus dem Template zurück sofern das Attribut kein lokal gespeichertes Attribut beinhaltet.


Indirect CoS
dn: cn=indirectCoS,dc=siroe,dc=com
objectClass: top
objectClass: LDAPsubentry
objectClass: cosSuperDefinition
objectClass: cosIndirectDefinition
cosIndirectSpecifier: manager
cosAttribute: departmentNumber

dn: uid=cfuentes,ou=people,dc=siroe,dc=com
objectClass: inteOrgPerson
objectClass: top
objectClass: LDAPsubentry
objectClass: extensibleObject
objectClass: cosTemplate
cn: Carla Fuentes
uid: cfuentes
departmentNumber: 318842

dn: uid=wholiday,ou=people,dc=siroe,dc=com
objectClass: inetOrgPerson
cn: William Holiday
uid: wholiday
manager: uid=cfuentes,ou=people,dc=siroe,dc=com
departmentNumber: 318842
Das erste Objekt ist die CoS Definition. Sie verweist mit dem Attribut "cosIndirectSpecifier" auf das Attribut im Zielobjekt, in diesem der DN zum Template gespeichert ist.
Das zweite Objekt dient als CoS Template.

Das dritte Objekt ist das Zielobjekt für dieses das virtuelle Attribut generiert wird. Wird das Objekt abgefragt, dann bekommt man das Attribut "departmentNumber" aus dem Template zurück sofern das Attribut kein lokal gespeichertes Attribut beinhaltet.


Classic CoS
dn: cn=ClassicCoS,dc=siroe,dc=com
objectClass: top
objectClass: LDAPsubentry
objectClass: cosSuperDefinition
objectClass: cosClassicDefinition
cosTemplateDN: cn=siroeUS,cn=data
cosSpecifier: employeeType
cosAttribute: postalCode override

dn: cn=sales,cn=siroeUS,cn=data
objectClass: top
objectClass: LDAPsubentry
objectClass: extensibleObject
objectClass: cosTemplate
postalCode: 44438

dn: uid=wholiday,ou=people,dc=siroe,dc=com
objectClass: inetOrgPerson
cn= William Holiday
uid: wholiday
employeeType: sales
postalCode: 44438
Das erste Objekt ist die CoS Definition. Mit dem Attribut "cosTemplateDN" wird der Basis DN angegeben, wo alle Templates liegen. Im Attribut "cosSpecifier" ist definiert, welches Attribut im Zielobjekt für die Auswahl des Templates herangezogen wird. "cosAttribute" beinhaltet wieder das Attribut, welches zurückgegeben wird. "override" ist der override qualifier (s.u.).
Im Zielobjekt gibt es nun das Attribut "employeeType" aus dem Wert "sales" und dem in der CoS Defnition angegebenen Basis DN wird nun der DN zum Template wiefolgt gebildet:
dn: cn=<Wert von "employeeType">,<Wert von "cosTemplateDN">


override qualifier

Mit der "override qualifier" Angabe im Attribut "cosAttribute" in der CoS Definition kann das Rückgabeverhalten des Server bestimmt werden. Die Angabe wird hinter dem Attribut angegeben und kann folgende Werte haben:
  • "default" (oder keine Angabe)
    reale Attribut Werte werden nicht durch virtuelle überschrieben
  • "override"
    es werden immer die virtuellen Attribute zurückgegeben
  • "operational"
    operational Attribute werden nur zurückgegeben wenn sie explizit vom Client angefragt werden. Sie verhalten sich wie bei "override".
    Man kann allerdings nur Attribute als "operational" definieren wenn sie auch im Schema als "operational" definiert sind.
  • "merge-schemes"
    definiert, das daß Attribut Multi-Values haben kann (von mehreren Templates oder mehreren CoS Defnitionen - s.u.)


Multivalued CoS Attribute:

Es gibt 2 Möglichkeiten für CoS Attribute um "multivalued" zu sein:
  1. Mit "indirect" oder "classic" CoS, wenn das "Specifier" Attribut Multivalued ist. In diesem Fall werden mehrere Templates angezogen.
  2. Wenn mehrere CoS Definitionen existieren die dem Eintrag entsprechen und das gleiche Attribut ("cosAttribute") beinhalten und als override qualifier "merge-schemes" defniert haben, werden alle Werte zurückgegeben.
Wenn mehrere CoS Templates ziehen, kann im CoS Template das Attribut: "cosPriority" gesetzt werden. Der kleinste Eintrag (0...n) zieht als erstes.

Beispiel: CoS in Verbindung mit Rollen

Aufgabe:
Das Attribut: "mailboxQuota" wird als virtuelles Attribut aufgrund einer bestimmten Rolle vergeben.
dn: cn=ManagerRole,ou=people,dc=siroe,dc=com
objectClass: top
objectClass: LDAPsubentry
objectClass: nsRoleDefinition
objectClass: nsComlexRoleDefnition
objectClass: nsFilteredRoleDefinition
cn: ManagerRole
nsRoleFilter: o=managers
Desciption: filtered role for managers

dn: cn=managerCOS,dc=siroe,dc=com
objectClass: top
objectClass: LDAPsubentry
objectClass: cosSuperDefinition
objectClass: cosClassicDefinition
cosTemplateDN: cn=managerCOS,dc=siroe,dc=com
cosSpecifier: nsRole
cosAttribute: mailboxquota override

dn: cn="cn=ManagerRole,ou=people,dc=siroe,dc=com",cn=managerCOS,dc=siroe,dc=com
objectClass: top
objectClass: LDAPsubentry
objectClass: extensibleObject
objectClass: cosTemplate
mailboxquota: 1000000
Das erste Objekt ist die Rollen-Definition ("filtered Role"). Jedes Objekt, welches auf den Suchfilter passt, bekommt das Attribut "nsRole" mit dem DN zur Rolle.

Das zweite Objekt ist die CoS Definition ("classic CoS"). Sie definiert, das die Templates sich unterhalb von DN "cn=managerCOS,dc=siroe,dc=com" befinden und die Auswahl des Templates sich im Attribut "nsRole" des Ziellobjekts befindet. Wenn das Template gefunden wurde, soll das Attribut "mailboxQuota" zurückgegeben werden und ggf. das am Zielobjekt gespeicherte "mailboxQuota" überschreiben (überlagern).

Das dritte Objekt ist das CoS Template. Es beinhaltet das mailboxQuota Attriut, welches beim Zielobjekt zurückgegeben werden soll.
hacker emblem