JBoss.orgCommunity Documentation
SPI Model contains following interfaces:
org.picketlink.idm.spi.model.IdentityObject - represents identity object. Contains information about object name and type (IdentityObjectType). Name and IdentityObjectType pair should be unique within realm.
org.picketlink.idm.spi.model.IdentityObjectType - represents identity object type. Name of IdentityType is unique.
org.picketlink.idm.spi.model.IdentityObjectAttribute - attribute assigned to IdentityObject
org.picketlink.idm.spi.model.IdentityObjectCredential - credential assigned to IdentityObject
org.picketlink.idm.spi.model.IdentityObjectCredentialType - represents type of IdentityObjectCredential.
org.picketlink.idm.spi.model.IdentityObjectRelationship - Directional relationship between two IdentityObject objects. Relationship is directional as it keeps information about from and to IdentityObject. Each IdentityObjectRelationship has a type (IdentityObjectRelationshipType) and can have a name (not required).
org.picketlink.idm.spi.model.IdentityObjectRelationshipType - named type of relationship
Model described above is very flexible as IdentityObjectType is able to map any kind of entities. Identity object and Group/GroupType objects are only one of many possible options (API is a subset of SPI possibilities). IdentityObjectRelationship defines a connection between any two IdentityObject objects. Each IdentityObjectRelationship has a type. To map previously described API two IdentityObjectRelationshipType objects are needed. One to map normal MEMBERSHIP like between an Identity and a Group or Group and Group objects. Second one to map Role concept. For API Role - RoleType refers to the name of the IdentityObjectRelationship. In default Hibernate implementation possible names of IdentityObjectRelationship are kept in a separate table. All of those can be easily redefined to support different kind of API.