42 lines
1.9 KiB
Text
42 lines
1.9 KiB
Text
[[_user-storage-spi]]
|
|
== User Storage SPI
|
|
|
|
The User Storage SPI allows you to write extensions to {{book.project.name}} to connect to external user databases and credential
|
|
stores. The built-in LDAP and ActiveDirectory support is an implementation of this SPI in action. Out of the box,
|
|
{{book.project.name}} uses its local database to create, update, and lookup users and validation credentials from. Often though,
|
|
organizations have existing external proprietary user databases that they cannot migrate to {{book.project.name}}'s data model.
|
|
For those situations, Application developers can write implementations of the User Storage SPI to bridge between the external user store and the internal
|
|
user object model that {{book.project.name}} uses to login users and manage them.
|
|
|
|
When the {{book.project.name}} runtime needs to look up a user, like when a user is logging in, it performs a number of
|
|
steps to locate the user. It first looks to see if the user is in the user cache, if its there it uses that in-memory
|
|
representation. Then it looks for the user within {{book.project.name}} local database. If its not there, it then
|
|
loops through User Storage SPI provider implementations to perform the user query until one of them returns
|
|
the user the runtime is looking for. The provider queries the external user store for the user and maps the external data representation
|
|
of the user to {{book.project.name}}'s user metamodel.
|
|
|
|
User Storage SPI provider implementations can also perform complex criteria queries, perform CRUD operations on users,
|
|
validate and manage credentials, or perform bulk updates of many users at once. It all depends on the capabilities of
|
|
the external store.
|
|
|
|
User Storage SPI provider implementations are packaged and deployed similarly (and often are) to Java EE components.
|
|
The are not enabled by default, but instead must be enabled and configured per realm under the `User Federation` tab
|
|
in the administration console.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|