Package org.wildfly.security.auth.realm
Class AggregateSecurityRealm
- java.lang.Object
-
- org.wildfly.security.auth.realm.AggregateSecurityRealm
-
- All Implemented Interfaces:
SecurityRealm
public final class AggregateSecurityRealm extends Object implements SecurityRealm
A realm which directs authentication to one realm and authorization to another. The authentication realm need not provide any authorization information. Likewise the authorization realm need not provide any authentication credential acquisition or verification capabilities.- Author:
- David M. Lloyd
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
AggregateSecurityRealm.Identity
-
Field Summary
Fields Modifier and Type Field Description private SecurityRealm
authenticationRealm
private SecurityRealm[]
authorizationRealms
private Function<Principal,Principal>
principalTransformer
-
Fields inherited from interface org.wildfly.security.auth.server.SecurityRealm
EMPTY_REALM
-
-
Constructor Summary
Constructors Constructor Description AggregateSecurityRealm(SecurityRealm authenticationRealm, Function<Principal,Principal> principalTransformer, SecurityRealm... authorizationRealms)
AggregateSecurityRealm(SecurityRealm authenticationRealm, SecurityRealm authorizationRealm)
Construct a new instance.AggregateSecurityRealm(SecurityRealm authenticationRealm, SecurityRealm... authorizationRealms)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private RealmIdentity
getAuthorizationIdentity(SecurityRealm authorizationRealm, Evidence evidence, Function<Principal,Principal> principalTransformer, RealmIdentity authenticationIdentity)
SupportLevel
getCredentialAcquireSupport(Class<? extends Credential> credentialType, String algorithmName, AlgorithmParameterSpec parameterSpec)
Determine whether a credential of the given type and algorithm is definitely obtainable, possibly obtainable (for] some identities), or definitely not obtainable.SupportLevel
getEvidenceVerifySupport(Class<? extends Evidence> evidenceType, String algorithmName)
Determine whether a given type of evidence is definitely verifiable, possibly verifiable (for some identities), or definitely not verifiable.RealmIdentity
getRealmIdentity(Principal principal)
Get a handle for to the identity for the given principal in the context of this security realm.RealmIdentity
getRealmIdentity(Evidence evidence)
Get a handle for to the identity for the given evidence in the context of this security realm.void
handleRealmEvent(RealmEvent event)
Handle a realm event.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.wildfly.security.auth.server.SecurityRealm
getCredentialAcquireSupport, getRealmIdentity
-
-
-
-
Field Detail
-
authenticationRealm
private final SecurityRealm authenticationRealm
-
authorizationRealms
private final SecurityRealm[] authorizationRealms
-
-
Constructor Detail
-
AggregateSecurityRealm
public AggregateSecurityRealm(SecurityRealm authenticationRealm, SecurityRealm authorizationRealm)
Construct a new instance.- Parameters:
authenticationRealm
- the realm to use for authenticationauthorizationRealm
- the realm to use for authorization
-
AggregateSecurityRealm
public AggregateSecurityRealm(SecurityRealm authenticationRealm, SecurityRealm... authorizationRealms)
-
AggregateSecurityRealm
public AggregateSecurityRealm(SecurityRealm authenticationRealm, Function<Principal,Principal> principalTransformer, SecurityRealm... authorizationRealms)
-
-
Method Detail
-
getRealmIdentity
public RealmIdentity getRealmIdentity(Evidence evidence) throws RealmUnavailableException
Description copied from interface:SecurityRealm
Get a handle for to the identity for the given evidence in the context of this security realm. Any validation / name mapping is an implementation detail for the realm. The identity may or may not exist. The returned handle must be cleaned up by a call toRealmIdentity.dispose()
. Where this method is used to obtain aRealmIdentity
prior to evidence verification the methodRealmIdentity.getEvidenceVerifySupport(Class, String)
will be used to verify if the identity is usable.- Specified by:
getRealmIdentity
in interfaceSecurityRealm
- Parameters:
evidence
- an evidence instance which identifies the identity within the realm (must not benull
)- Returns:
- the
RealmIdentity
for the provided evidence (notnull
) - Throws:
RealmUnavailableException
-
getRealmIdentity
public RealmIdentity getRealmIdentity(Principal principal) throws RealmUnavailableException
Description copied from interface:SecurityRealm
Get a handle for to the identity for the given principal in the context of this security realm. Any validation / name mapping is an implementation detail for the realm. The identity may or may not exist. The returned handle must be cleaned up by a call toRealmIdentity.dispose()
.- Specified by:
getRealmIdentity
in interfaceSecurityRealm
- Parameters:
principal
- the principal which identifies the identity within the realm (must not benull
)- Returns:
- the
RealmIdentity
for the provided principal (notnull
) - Throws:
RealmUnavailableException
-
getCredentialAcquireSupport
public SupportLevel getCredentialAcquireSupport(Class<? extends Credential> credentialType, String algorithmName, AlgorithmParameterSpec parameterSpec) throws RealmUnavailableException
Description copied from interface:SecurityRealm
Determine whether a credential of the given type and algorithm is definitely obtainable, possibly obtainable (for] some identities), or definitely not obtainable.- Specified by:
getCredentialAcquireSupport
in interfaceSecurityRealm
- Parameters:
credentialType
- the exact credential type (must not benull
)algorithmName
- the algorithm name, ornull
if any algorithm is acceptable or the credential type does not support algorithm namesparameterSpec
- the algorithm parameters to match, ornull
if any parameters are acceptable or the credential type does not support algorithm parameters- Returns:
- the level of support for this credential
- Throws:
RealmUnavailableException
- if the realm is not able to handle requests for any reason
-
getEvidenceVerifySupport
public SupportLevel getEvidenceVerifySupport(Class<? extends Evidence> evidenceType, String algorithmName) throws RealmUnavailableException
Description copied from interface:SecurityRealm
Determine whether a given type of evidence is definitely verifiable, possibly verifiable (for some identities), or definitely not verifiable.- Specified by:
getEvidenceVerifySupport
in interfaceSecurityRealm
- Parameters:
evidenceType
- the type of evidence to be verified (must not benull
)algorithmName
- the algorithm name, ornull
if any algorithm is acceptable or the evidence type does not support algorithm names- Returns:
- the level of support for this evidence type
- Throws:
RealmUnavailableException
- if the realm is not able to handle requests for any reason
-
getAuthorizationIdentity
private RealmIdentity getAuthorizationIdentity(SecurityRealm authorizationRealm, Evidence evidence, Function<Principal,Principal> principalTransformer, RealmIdentity authenticationIdentity) throws RealmUnavailableException
- Throws:
RealmUnavailableException
-
handleRealmEvent
public void handleRealmEvent(RealmEvent event)
Description copied from interface:SecurityRealm
Handle a realm event. These events allow the realm to act upon occurrences that are relevant to policy of the realm; for example, the realm may choose to increase password iteration count on authentication success, or change the salt of a password after a certain number of authentications.The default implementation does nothing.
- Specified by:
handleRealmEvent
in interfaceSecurityRealm
- Parameters:
event
- the realm event
-
-