Introduce a Profile SPI that can be used to provide meta-data for user profile attributes. Details about an attribute would include:
- User changeable (could potentially require a specific role as well)
- Admin changeable
- Attribute type
The built-in provider should provide the mechanism to define simple attributes as well as validation. It should be configurable through the admin console. For more advanced use-cases it would be possible to write a custom profile provider.
The Profile SPI would be used by:
- Registration screen
- Account management
- Admin console
- Identity brokering
Built-in forms such as account and registration page would have a number of built-in attributes that would be displayed depending on the profile. For example the account could have a field for DOB which would only be shown if the realm profile includes a DOB.