A security realm may provide any principal types it likes – it does need need to use "users" and "groups". What is the meaning of getUserPrincipal or getGroupPrincipal for a realm that provides principals of type "favorite color" or "country" or "automobile" or something else? Also, not all security realms will be able to accomodate generalized regular expressions (it doesn't map well to SQL, for example, though Oracle 10g has some features along those lines).
What would be really helpful would be for each realm to provide a list of the principal classes it provides, and then a list of available principal names for each class. This would let a deploy tool present a drop-down of principal classes, and then once selected, a drop-down of avaialble principals for role mapping. I suggest something like:
- Gets the principal classes used by this realm
public String getPrincipalClassNames();
- Gets the names of all the principals in the specified
- principal class. Should return null if the list of
- principals is not available, or is too large to reasonably
- present to a deployer in a pick list.
public String getPrincipalNames(String className);