This article is a continuation of my previous entry where I explained how OIF/IdP leverages OAM to authenticate users at runtime:
OIF/IdP internally forwards the user to OAM and indicates which
Authentication Scheme should be used to challenge the user if needed
OAM determine if the user should be challenged (user already authenticated, session timed out or not, session
authentication level equal or higher than the level of the
authentication scheme specified by OIF/IdP…)
After identifying the user, OAM internally forwards the user back to OIF/IdP
OIF/IdP can resume its operation
In this article, I will discuss how OIF/IdP can be configured to map Federation
Authentication Methods to OAM
Authentication Schemes:
When processing an Authn Request, where the SP requests a specific Federation
Authentication Method with which the user should be challenged
When sending an Assertion, where OIF/IdP sets the Federation
Authentication Method in the Assertion
Enjoy the reading!
Overview
The various Federation protocols support mechanisms allowing the partners to exchange information on:
How the user should be challenged, when the SP/RP makes a request
How the user was challenged, when the IdP/OP issues an SSO response
When a remote SP partner redirects the user to OIF/IdP for Federation SSO, the message might contain data requesting how the user should be challenged by the IdP: this is treated as the Requested Federation
Authentication Method.
OIF/IdP will need to map that Requested Federation
Authentication Method to a local
Authentication Scheme, and then invoke OAM for user authentication/challenge with the mapped
Authentication Scheme. OAM would authenticate the user if necessary with the scheme specified by OIF/IdP.
Similarly, when an IdP issues an SSO response, most of the time it will need to include an identifier representing how the user was challenged: this is treated as the Federation
Authentication Method.
When OIF/IdP issues an Assertion, it will evaluate the
Authentication Scheme with which OAM identified the user:
If the
Authentication Scheme can be mapped to a Federation
Authentication Method, then OIF/IdP will use the result of that mapping in the outgoing SSO response:
AuthenticationStatement in the SAML Assertion
OpenID Response, if PAPE is enabled
If the
Authentication Scheme cannot be mapped, then OIF/IdP will set the Federation
Authentication Method as the
Authentication Scheme name in the outgoing SSO response:
AuthenticationStatement in the SAML Assertion
OpenID Response, if PAPE is enabled
Mappings
In OIF/IdP, the mapping between Federation
Authentication Methods and
Authentication Schemes has the following rules:
One Federation
Authentication Method can be mapped to several
Authentication Schemes
In a Federation
Authentication Method <->
Authentication Schemes mapping, a single
Authentication Scheme is marked as the default scheme that will be used to authenticate a user, if the SP/RP partner requests the user to be authenticated via a specific Federation
Authentication Method
An
Authentication Scheme can be mapped to a single Federation
Authentication Method
Let’s examine the following example and the various use cases, based on the SAML 2.0 protocol:
Mappings defined as:
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport mapped to
LDAPScheme, marked as the default scheme used for
authentication
BasicScheme
urn:oasis:names:tc:SAML:2.0:ac:classes:X509 mapped to
X509Scheme, marked as the default scheme used for
authentication
Use cases:
SP sends an AuthnRequest specifying urn:oasis:names:tc:SAML:2.0:ac:classes:X509 as the RequestedAuthnContext: OIF/IdP will authenticate the use with X509Scheme since it is the default scheme mapped for that method.
SP sends an AuthnRequest specifying urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport as the RequestedAuthnContext: OIF/IdP will authenticate the use with LDAPScheme since it is the default scheme mapped for that method, not the BasicScheme
SP did not request any specific methods, and user was authenticated with BasisScheme: OIF/IdP will issue an Assertion with urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport as the FederationAuthenticationMethod
SP did not request any specific methods, and user was authenticated with LDAPScheme: OIF/IdP will issue an Assertion with urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport as the FederationAuthenticationMethod
SP did not request any specific methods, and user was authenticated with BasisSessionlessScheme: OIF/IdP will issue an Assertion with BasisSessionlessScheme as the FederationAuthenticationMethod, since that scheme could not be mapped to any Federation
Authentication Method (in this case, the administrator would need to correct that and create a mapping)
Configuration
Mapping Federation
Authentication Methods to OAM
Authentication Schemes is protocol dependent, since the methods are defined in the various protocols (SAML 2.0, SAML 1.1, OpenID 2.0).
As such, the WLST commands to set those mappings will involve:
Either the SP Partner Profile and affect all Partners referencing that profile, which do not override the Federation
Authentication Method to OAM
Authentication Scheme mappings
Or the SP Partner entry, which will only affect the SP Partner
It is important to note that if an SP Partner is configured to define one or more Federation
Authentication Method to OAM
Authentication Scheme mappings, then all the mappings defined in the SP Partner Profile will be ignored.
Authentication Schemes
As discussed in the previous article, during Federation SSO, OIF/IdP will internally forward the user to OAM for authentication/verification and specify which
Authentication Scheme to use.
OAM will determine if a user needs to be challenged:
If the user is not authenticated yet
If the user is authenticated but the session timed out
If the user is authenticated, but the
authentication scheme level of the original
authentication is lower than the level of the
authentication scheme requested by OIF/IdP
So even though an SP requests a specific Federation
Authentication Method to be used to challenge the user, if that method is mapped to an
Authentication Scheme and that at runtime OAM deems that the user does not need to be challenged with that scheme (because the user is already authenticated, session did not time out, and the session authn level is equal or higher than the one for the specified
Authentication Scheme), the flow won’t result in a challenge operation.
Protocols
SAML 2.0
The SAML 2.0 specifications define the following Federation
Authentication Methods for SAML 2.0 flows:
urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified
urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocol
urn:oasis:names:tc:SAML:2.0:ac:classes:Telephony
urn:oasis:names:tc:SAML:2.0:ac:classes:MobileOneFactorUnregistered
urn:oasis:names:tc:SAML:2.0:ac:classes:PersonalTelephony
urn:oasis:names:tc:SAML:2.0:ac:classes:PreviousSession
urn:oasis:names:tc:SAML:2.0:ac:classes:MobileOneFactorContract
urn:oasis:names:tc:SAML:2.0:ac:classes:Smartcard
urn:oasis:names:tc:SAML:2.0:ac:classes:Password
urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword
urn:oasis:names:tc:SAML:2.0:ac:classes:X509
urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient
urn:oasis:names:tc:SAML:2.0:ac:classes:PGP
urn:oasis:names:tc:SAML:2.0:ac:classes:SPKI
urn:oasis:names:tc:SAML:2.0:ac:classes:XMLDSig
urn:oasis:names:tc:SAML:2.0:ac:classes:SoftwarePKI
urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword
urn:oasis:names:tc:SAML:2.0:ac:classes:NomadTelephony
urn:oasis:names:tc:SAML:2.0:ac:classes:AuthenticatedTelephony
urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorUnregistered
urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorContract
urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI
urn:oasis:names:tc:SAML:2.0:ac:classes:TimeSyncToken
Out of the box, OIF/IdP has the following mappings for the SAML 2.0 protocol:
Only urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport is defined
This Federation
Authentication Method is mapped to:
LDAPScheme, marked as the default scheme used for
authentication
FAAuthScheme
BasicScheme
BasicFAScheme
This mapping is defined in the saml20-sp-partner-profile SP Partner Profile which is the default OOTB SP Partner Profile for SAML 2.0
An example of an AuthnRequest message sent by an SP to an IdP with the SP requesting a specific Federation
Authentication Method to be used to challenge the user would be:
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="https://idp.com/oamfed/idp/samlv20" ID="id-8bWn-A9o4aoMl3Nhx1DuPOOjawc-" IssueInstant="2014-03-21T20:51:11Z" Version="2.0"> <saml:Issuer ...>https://acme.com/sp</saml:Issuer> <samlp:NameIDPolicy AllowCreate="false" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/> <samlp:RequestedAuthnContext Comparison="minimum"> <saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport </saml:AuthnContextClassRef> </samlp:RequestedAuthnContext></samlp:AuthnRequest>
An example of an Assertion issued by an IdP would be:
<samlp:Response ...> <saml:Issuer ...>https://idp.com/oam/fed</saml:Issuer> <samlp:Status> <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/> </samlp:Status> <saml:Assertion ...> <saml:Issuer ...>https://idp.com/oam/fed</saml:Issuer> <dsig:Signature> ... </dsig:Signature> <saml:Subject> <saml:NameID ...>
[email protected]</saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData .../> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions ...> <saml:AudienceRestriction> <saml:Audience>https://acme.com/sp</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant="2014-03-21T20:53:55Z" SessionIndex="id-6i-Dm0yB-HekG6cejktwcKIFMzYE8Yrmqwfd0azz" SessionNotOnOrAfter="2014-03-21T21:53:55Z"> <saml:AuthnContext> <saml:AuthnContextClassRef> urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport </saml:AuthnContextClassRef> </saml:AuthnContext> </saml:AuthnStatement> </saml:Assertion></samlp:Response>
An administrator would be able to specify a mapping between a SAML 2.0 Federation
Authentication Method and one or more OAM
Authentication Schemes
SAML 1.1
The SAML 1.1 specifications define the following Federation
Authentication Methods for SAML 1.1 flows:
urn:oasis:names:tc:SAML:1.0:am:unspecified
urn:oasis:names:tc:SAML:1.0:am:HardwareToken
urn:oasis:names:tc:SAML:1.0:am:password
urn:oasis:names:tc:SAML:1.0:am:X509-PKI
urn:ietf:rfc:2246
urn:oasis:names:tc:SAML:1.0:am:PGP
urn:oasis:names:tc:SAML:1.0:am:SPKI
urn:ietf:rfc:3075
urn:oasis:names:tc:SAML:1.0:am:XKMS
urn:ietf:rfc:1510
urn:ietf:rfc:2945
Out of the box, OIF/IdP has the following mappings for the SAML 1.1 protocol:
Only urn:oasis:names:tc:SAML:1.0:am:password is defined
This Federation
Authentication Method is mapped to:
LDAPScheme, marked as the default scheme used for
authentication
FAAuthScheme
BasicScheme
BasicFAScheme
This mapping is defined in the saml11-sp-partner-profile SP Partner Profile which is the default OOTB SP Partner Profile for SAML 1.1
An example of an Assertion issued by an IdP would be:
<samlp:Response ...> <samlp:Status> <samlp:StatusCode Value="samlp:Success"/> </samlp:Status> <saml:Assertion Issuer="https://idp.com/oam/fed" ...> <saml:Conditions ...> <saml:AudienceRestriction> <saml:Audience>https://acme.com/sp/ssov11</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthenticationInstant="2014-03-21T20:53:55Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"> <saml:Subject> <saml:NameID ...>
[email protected]</saml:NameID> <saml:SubjectConfirmation> <saml:ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:bearer </saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> </saml:AuthnStatement> <dsig:Signature> ... </dsig:Signature> </saml:Assertion></samlp:Response>
Note: SAML 1.1 does not define an AuthnRequest message.
An administrator would be able to specify a mapping between a SAML 1.1 Federation
Authentication Method and one or more OAM
Authentication Schemes
OpenID 2.0
The OpenID 2.0 PAPE specifications define the following Federation
Authentication Methods for OpenID 2.0 flows:
http://schemas.openid.net/pape/policies/2007/06/phishing-resistant
http://schemas.openid.net/pape/policies/2007/06/multi-factor
http://schemas.openid.net/pape/policies/2007/06/multi-factor-physical
Out of the box, OIF/IdP does not define any mappings for the OpenID 2.0 Federation
Authentication Methods.
For OpenID 2.0, the configuration will involve mapping a list of OpenID 2.0 policies to a list of
Authentication Schemes.
An example of an OpenID 2.0 Request message sent by an SP/RP to an IdP/OP would be:
https://idp.com/openid?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=id-6a5S6zhAKaRwQNUnjTKROREdAGSjWodG1el4xyz3&openid.return_to=https%3A%2F%2Facme.com%2Fopenid%3Frefid%3Did-9PKVXZmRxAeDYcgLqPm36ClzOMA-&openid.realm=https%3A%2F%2Facme.com%2Fopenid&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ax.mode=fetch_request&openid.ax.type.attr0=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ax.if_available=attr0&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&openid.pape.max_auth_age=0
An example of an Open ID 2.0 SSO Response issued by an IdP/OP would be:
https://acme.com/openid?refid=id-9PKVXZmRxAeDYcgLqPm36ClzOMA-&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fidp.com%2Fopenid&openid.claimed_id=https%3A%2F%2Fidp.com%2Fopenid%3Fid%3Did-38iCmmlAVEXPsFjnFVKArfn5RIiF75D5doorhEgqqPM%3D&openid.identity=https%3A%2F%2Fidp.com%2Fopenid%3Fid%3Did-38iCmmlAVEXPsFjnFVKArfn5RIiF75D5doorhEgqqPM%3D&openid.return_to=https%3A%2F%2Facme.com%2Fopenid%3Frefid%3Did-9PKVXZmRxAeDYcgLqPm36ClzOMA-&openid.response_nonce=2014-03-24T19%3A20%3A06Zid-YPa2kTNNFftZkgBb460jxJGblk2g--iNwPpDI7M1&openid.assoc_handle=id-6a5S6zhAKaRwQNUnjTKROREdAGSjWodG1el4xyz3&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ax.mode=fetch_response&openid.ax.type.attr0=http%3A%2F%2Fsession%2Fcount&openid.ax.value.attr0=1&openid.ax.type.attr1=http%3A%2F%2Fopenid.net%2Fschema%2FnamePerson%2Ffriendly&openid.ax.value.attr1=My+name+is+Bobby+Smith&openid.ax.type.attr2=http%3A%2F%2Fschemas.openid.net%2Fax%2Fapi%2Fuser_id&openid.ax.value.attr2=bob&openid.ax.type.attr3=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ax.value.attr3=bob%40oracle.com&openid.ax.type.attr4=http%3A%2F%2Fsession%2Fipaddress&openid.ax.value.attr4=10.145.120.253&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&openid.pape.auth_time=2014-03-24T19%3A20%3A05Z&openid.pape.auth_policies=http%3A%2F%2Fschemas.openid.net%2Fpape%2Fpolicies%2F2007%2F06%2Fphishing-resistant&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ax%2Cax.mode%2Cax.type.attr0%2Cax.value.attr0%2Cax.type.attr1%2Cax.value.attr1%2Cax.type.attr2%2Cax.value.attr2%2Cax.type.attr3%2Cax.value.attr3%2Cax.type.attr4%2Cax.value.attr4%2Cns.pape%2Cpape.auth_time%2Cpape.auth_policies&openid.sig=mYMgbGYSs22l8e%2FDom9NRPw15u8%3D
In the next article, I will provide examples on how to configure OIF/IdP for the various protocols, to map OAM
Authentication Schemes to Federation
Authentication Methods.Cheers,Damien Carru