Persistent or Transient Federation
You can choose to permanently link identities, known as persistent federation. AM lets you configure the service provider to persistently link identities, based on an attribute value from the identity provider. When you know the user accounts on both the identity provider and the service provider share a common attribute value, such as an email address or another unique user identifier, you can use this method to link accounts without user interaction. See "To Link Identities Automatically Based on an Attribute Value".
In some cases, the identity provider can choose to communicate a minimum of information about an authenticated user, with no user account maintained on the service provider side. This is known as transient federation.
Transient federation can be useful when the service provider either needs no user-specific account to provide a service, or when you do not want to retain a user profile on the service provider, but instead, you make authorization decisions based on attribute values from the identity provider.
In a SAML v2.0 federation where accounts have been persistently linked, authentication is required only on the identity provider side.
Authentication is required on the service provider side, however, when the service provider is unable to map the identity in the assertion from the identity provider to a local user account.
This can happen the first time accounts are linked, for example. After which, the persistent identifier establishes the mapping.
Authenticating to the SP may also be required when transient federation is used when linking identities. The service provider must authenticate the user for every SAML assertion received. This is because the identifier used to link the identities is transient; it does not provide a repeatable, durable means to link the identities.
Note
You can prevent the ability to persistently link accounts on the SP side by setting the spDoNotWriteFederationInfo
property to true
, and on the IDP side by setting the idpDisableNameIDPersistence
to true
.
Both integrated and standalone SAML v2.0 implementations allow you to persistently link accounts.
Before attempting to configure persistent federation, ensure that you have configured AM for SAML v2.0 single sign-on, created the identity and service providers, and configured a circle of trust. For information on performing those tasks, see Deployment Considerations and Implementing SSO and SLO.
If you are using integrated mode SSO:
Navigate to Realms > Realm Name > Authentication > Modules, and then select the module name of your SAML2 authentication module.
In the NameID Format field, specify the value
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
.Note
You can also link accounts together using different nameid formats. For example, you could use the
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
value, and receive the IDP user's e-mail address in the NameID value. The SP would display the login page to identify the local user account and persistently link them.Save your work.
Initiate single sign-on by accessing a URL that calls an authentication chain that includes the SAML2 module.
For example,
https://www.sp.com:8443/openam/XUI/#login/&service=mySAMLChain
.
If you are using standalone mode single sign-on:
Initiate single sign-on with either the
spSSOInit.jsp
oridpSSOInit.jsp
JSP page, includingNameIDFormat=urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
as a query parameter.For example, to initiate single sign-on from the service provider, access a URL similar to the following:
https://www.sp.com:8443/openam/saml2/jsp/spSSOInit.jsp ?idpEntityID=https%3A%2F%2Fwww.idp.com%3A8443%2Fopenam &metaAlias=/sp &NameIDFormat=urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
To initiate single sign-on from AM acting as the identity provider, access a URL similar to the following:
https://www.idp.com:8443/openam/saml2/jsp/idpSSOInit.jsp ?spEntityID=https%3A%2F%2Fwww.sp.com%3A8443%2Fopenam &metaAlias=/idp &NameIDFormat=urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
To test your work:
Authenticate to the IDP as the user you want to persistently link.
On success, you will be redirected to the SP.
Tip
If there was no login page displayed at the SP, you might have enabled auto-federation, or AM was able to find a link between the two identities without requiring authentication at the SP.
To ensure there are no existing links, create a new identity in the IDP, and initiate single sign-on again, authenticating to the IDP as the new user.
Authenticate to the SP as the local user to link with.
The accounts are persistently linked, with persistent identifiers stored in the user's profile on both the IDP and the SP.
Subsequent attempts to access the SP will only require that the user authenticates to the IDP, as the identities are now permanently linked.
Note
You can prevent the ability to persistently link accounts on the SP side by setting the
spDoNotWriteFederationInfo
property totrue
, and on the IDP side by setting theidpDisableNameIDPersistence
totrue
.
Both integrated and standalone SAML v2.0 implementations allow you to temporarily link accounts.
Before attempting to configure transient federation, ensure that you have configured AM for SAML v2.0, created the identity and service providers, and configured a circle of trust. You must also have configured AM to support single sign-on. For information on performing those tasks, see Deployment Considerations and Implementing SSO and SLO.
If you are using integrated mode SSO:
Navigate to Realms > Realm Name > Authentication > Modules, and then select the module name of your SAML2 authentication module.
In the NameID Format field, specify the value
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
.Save your work.
Initiate single sign-on by accessing a URL that calls an authentication chain that includes the SAML2 module.
For example,
https://www.sp.com:8443/openam/XUI/#login/&service=mySAMLChain
.
If you are using standalone mode SSO:
Initiate single sign-on with either the
spSSOInit.jsp
oridpSSOInit.jsp
JSP page, includingNameIDFormat=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
as a query parameter.For example, to initiate single sign-on from the service provider, access a URL similar to the following:
https://www.sp.com:8443/openam/saml2/jsp/spSSOInit.jsp ?idpEntityID=https%3A%2F%2Fwww.idp.com%3A8443%2Fopenam &metaAlias=/sp &NameIDFormat=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
To initiate single sign-on from the identity provider, access a URL similar to the following:
https://www.idp.com:8443/openam/saml2/jsp/idpSSOInit.jsp ?spEntityID=https%3A%2F%2Fwww.sp.com%3A8443%2Fopenam &metaAlias=/idp &NameIDFormat=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
To test your work:
Authenticate to the IDP as the user you want to temporarily link.
On success, you will be redirected to the SP.
Authenticate to the SP as the local user.
The accounts are only linked temporarily, for the duration of the session. Once the user logs out, the accounts are no longer linked.
Nothing is written in the user's profile on either the identity provider and the service provider.
Subsequent attempts to access the SP will require that the user authenticates to the IDP AND the SP (assuming no existing session exists), as the identities are not linked.
Managing Federation of Persistently Linked Accounts
AM implements the SAML v2.0 Name Identifier Management profile, allowing you to change a persistent identifier that has been set to federate accounts, and also to terminate federation for an account.
When user accounts are stored in an LDAP directory server, name identifier information is stored on the sun-fm-saml2-nameid-info
and sun-fm-saml2-nameid-infokey
attributes of a user's entry. [1]
AM provides a pair of JSP files for managing persistently linked accounts; idpMNIRequestInit.jsp
for initiating changes from the IDP side, and spMNIRequestInit.jsp
for initiating changes from the SP side.
The JSP parameters are listed below. When setting parameters in the JSPs, make sure the parameter values are correctly URL-encoded.
-
spEntityID
(Required) Use this parameter to indicate the remote service provider. Make sure you URL-encode the value. For example, specify
spEntityID=https://www.sp.com:8443/openam
asspEntityID=https%3A%2F%2Fwww.sp.com%3A8443%2Fopenam
.-
metaAlias
(Required) Use this parameter to specify the local alias for the provider; such as,
metaAlias=/myRealm/idp
. This parameter takes the format/realm-name/provider-name
as described in MetaAlias. You do not repeat the slash for the Top Level Realm; for example,metaAlias=/idp
.-
requestType
(Required) Type of manage name ID request, either
NewID
to change the ID, orTerminate
to remove the information that links the accounts on the identity provider and service provider.-
SPProvidedID
(Required if
requestType=NewID
) Name identifier in use as described above.-
affiliationID
(Optional) Use this parameter to specify a SAML affiliation identifier.
-
binding
(Optional) Use this parameter to indicate which binding to use for the operation. The full, long name format is required for this parameter to work.
The value must be one of the following:
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
urn:oasis:names:tc:SAML:2.0:bindings:SOAP
-
relayState
(Optional) Use this parameter to specify where to redirect the user when the process is complete. Make sure you URL-encode the value. For example,
relayState=http%3A%2F%2Fforgerock.com
takes the user tohttp://forgerock.com
.
-
idpEntityID
(Required) Use this parameter to indicate the remote identity provider. Make sure you URL-encode the value. For example, specify
idpEntityID=https://www.idp.com:8443/openam
asidpEntityID=https%3A%2F%2Fwww.idp.com%3A8443%2Fopenam
.-
metaAlias
(Required) Use this parameter to specify the local alias for the provider; such as,
metaAlias=/myRealm/sp
. This parameter takes the format/realm-name/provider-name
as described in MetaAlias. You do not repeat the slash for the Top Level Realm,metaAlias=/sp
.-
requestType
(Required) Type of manage name ID request, either
NewID
to change the ID, orTerminate
to remove the information that links the accounts on the identity provider and service provider.-
IDPProvidedID
(Required if
requestType=NewID
) Name identifier in use as described above.-
affiliationID
(Optional) Use this parameter to specify a SAML affiliation identifier.
-
binding
(Optional) Use this parameter to indicate which binding to use for the operation. The full, long name format is required for this parameter to work.
The value must be one of the following:
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
urn:oasis:names:tc:SAML:2.0:bindings:SOAP
-
relayState
(Optional) Use this parameter to specify where to redirect the user when the process is complete. Make sure you URL-encode the value. For example,
relayState=http%3A%2F%2Fforgerock.com
takes the user tohttp://forgerock.com
.
Retrieve the name identifier value, used to manage the federation in the second step.
You can retrieve the name identifier value on the IDP side by checking the value of the
sun-fm-saml2-nameid-infokey
property.For example, if the user's entry in the directory shows:
sun-fm-saml2-nameid-infokey:
https://www.idp.com:8443/openam|
https://www.sp.com:8443/openam|
XyfFEsr6Vixbnt0BSqIglLFMGjR2Then, the name identifier on the IDP side is
XyfFEsr6Vixbnt0BSqIglLFMGjR2
.You can retrieve the name identifier value on the SP side by checking the value of
sun-fm-saml2-nameid-info
. For example, if the user's entry in the directory shows the following:sun-fm-saml2-nameid-info: https://www.sp.com:8443/openam|
https://www.idp.com:8443/openam|
ATo9TSA9Y2Ln7DDrAdO3HFfH5jKD|
https://www.idp.com:8443/openam|
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent|
9B1OPy3m0ejv3fZYhlqxXmiGD24c|
https://www.sp.com:8443/openam|
SPRole|
falseThen, the name identifier on the SP side is
9B1OPy3m0ejv3fZYhlqxXmiGD24c
.
Use the identifier to initiate a change request, as in the following examples:
To initiate a change request from the service provider, use a URL similar to the following example:
https://www.sp.com:8443/openam/saml2/jsp/spMNIRequestInit.jsp ?idpEntityID=https%3A%2F%2Fwww.idp.com%3A8443%2Fopenam &metaAlias=/sp &requestType=NewID &IDPProvidedID=XyfFEsr6Vixbnt0BSqIglLFMGjR2
You can substitute
openam/SPMniInit
foropenam/saml2/jsp/spMNIRequestInit.jsp
.To initiate a change request from the identity provider, use a URL similar to the following example:
https://www.idp.com:8443/openam/saml2/jsp/idpMNIRequestInit.jsp ?spEntityID=https%3A%2F%2Fwww.sp.com%3A8443%2Fopenam &metaAlias=/idp &requestType=NewID &SPProvidedID =9B1OPy3m0ejv3fZYhlqxXmiGD24c
You can substitute
openam/IDPMniInit
foropenam/saml2/jsp/idpMNIRequestInit.jsp
AM lets you terminate account federation, where the accounts have been linked with a persistent identifier, as described in "To Enable Persistent Federation".
The examples below work in an environment where the identity provider is www.idp.example
and the service provider is www.sp.example
. Both providers have deployed AM on port 8443 under deployment URI /openam
.
To initiate the process of terminating account federation from the service provider, access the following URL with at least the query parameters shown:
https://www.sp.com:8443/openam/saml2/jsp/spMNIRequestInit.jsp ?idpEntityID=https%3A%2F%2Fwww.idp.com%3A8443%2Fopenam &metaAlias=/sp &requestType=Terminate
To initiate the process of terminating account federation from the identity provider, access the following URL with at least the query parameters shown:
https://www.idp.com:8443/openam/saml2/jsp/idpMNIRequestInit.jsp ?spEntityID=https%3A%2F%2Fwww.sp.com%3A8443%2Fopenam &metaAlias=/idp &requestType=Terminate
[1] To configure these attribute types, in the AM console, navigate to Configure > Global Services, and then select SAMLv2 Service Configuration.
[1] To configure these attribute types, in the AM console, navigate to Configure > Global Services, and then select SAMLv2 Service Configuration.