Module personnalisé de post-authentification dans OAM et SP
Cet article explique comment implémenter un module d'extension d'authentification personnalisé qui sera appelé une fois l'authentification SSO de fédération terminée et qui :
- Accéder aux informations contenues dans l'assertion SAML (nom IdP, attributs utilisateur...)
- Mettre à jour les attributs utilisateur LDAP en fonction des attributs utilisateur SAML
Pour plus d'informations sur la conception d'un module d'extension d'authentification personnalisé, reportez-vous au guide du développeur OAM, chapitre 3, qui décrit comment développer un tel module : http://docs.oracle.com/cd/E40329_01/dev.1112/e27134/authnapi.htm. Concentrons-nous sur les méthodes suivantes :
- Implémenter le module d'extension
- le compiler
- Packagez-le
- Télécharger le module d'extension vers OAM
- Créer un module d'authentification de fédération
Module d'authentification de fédération
Remarque importante : lors de l'utilisation de l'application de fournisseur de services de test Federation, le module d'authentification est ignoré et, par conséquent, les modules d'extension définis dans ce type de module ne seront pas exécutés.
Voici un module d'authentification OAM :
- Ensemble de modules d'extension d'authentification
- Orchestration déterminant l'ordre d'exécution des modules d'extension
Le module d'authentification de fédération OOTB, appelé FederationPlugin, est composé de deux modules d'extension :
- FedAuthnRequestPlugin : démarre le flux SSO de fédération, détermine le IdP à utiliser s'il n'est pas fourni par un module d'extension d'authentification précédent, crée une demande SSO et redirige l'utilisateur vers IdP
- AssertionProcessing : traite une réponse SSO SAML/OpenID entrante et met en correspondance le message avec un enregistrement d'utilisateur local dans l'annuaire LDAP.
L'orchestration peut être vue par :
- Accédez à la console d'administration OAM :
http(s)://oam-adminhost:oam-admin-port/oamconsole. - Accédez à Access Manager, Modules d'authentification.
- Ouvrez FederationScheme.
- Cliquez sur l'onglet Etapes pour voir les modules d'extension.
- Cliquez sur l'onglet Orchestration des étapes pour voir l'orchestration entre les différents modules d'extension et le module d'extension utilisé pour démarrer l'opération.

Description de l'image Federation_Plugin_Screen.png
Module d'extension AssertionProcessing
Le module d'extension AssertionProcessing est responsable de la validation et de la consommation d'une assertion SSO entrante, de la mise en correspondance de l'assertion avec un enregistrement utilisateur LDAP local et renvoie l'identité de l'utilisateur ainsi que le contenu de l'assertion à OAM. L'instance AuthenticationContext partagée entre les modules d'extension d'authentification contient des objets CredentialParam qui permettent aux différents modules d'extension de communiquer lors de l'exécution, ainsi que le résultat de l'opération d'authentification.
oracle.security.am.plugin.authn.AuthenticationContext: contexte de l'opération d'authentification partagée entre les différents modules d'extension d'authentificationoracle.security.am.plugin.authn.Credential: collecte des données d'informations d'identification stockées dans AuthenticationContextoracle.security.am.plugin.authn.CredentialParam: paramètre d'informations d'identification unique référencé par un nom et dont le type (chaîne la plupart du temps) dépend du type stocké dans l'instance d'informations d'identification
Données de contexte d'authentification
En cas de réussite de l'authentification, un module d'extension d'authentification OAM renvoie les données suivantes dans AuthenticationContext :
- Sujet JaaS identifiant l'utilisateur, avec les instances de principal suivantes :
oracle.security.am.common.utilities.principal.OAMUserPrincipaldont le nom contientuserIDoracle.security.am.common.utilities.principal.OAMUserDNPrincipaldont le nom contient le nom distinctif (DN) de l'utilisateuroracle.security.am.common.utilities.principal.OAMGUIDPrincipals'il est présent, dont le nom contient le GUID de l'utilisateur
Instances CredentialParam suivantes contenues dans l'objet d'informations d'identification de AuthenticationContext
- Nom distinctif de l'utilisateur référencé par la chaîne KEY_USERNAME_DN
- Type : chaîne
- Valeur : nom distinctif de l'utilisateur
Les instances PluginResponse suivantes contenues dans AuthenticationContext :
- userID référencé par la chaîne
KEY_AUTHENTICATED_USER_NAME - Type : PluginAttributeContextType.LITERAL
- Valeur : userID
Nom de la banque d'identités où se trouve l'enregistrement utilisateur
- Référencé par la chaîne
KEY_IDENTITY_STORE_REF - Type : PluginAttributeContextType.LITERAL
- Valeur : nom de la banque d'ID OAM
Niveau d'authentification s'il a été remplacé lors du traitement du fournisseur de services de fédération (voir cet article pour plus d'informations : Art 27 - Mise en correspondance de la méthode Fed Authn avec les niveaux Authn dans le fournisseur de services OAM)
- Référencé par la chaîne KEY_AUTHN_LEVEL
- Type : PluginAttributeContextType.LITERAL
- Valeur : niveau authn sous forme de chaîne
Données d'assertion, chaque élément étant une instance PluginResponse autonome :
- Référencé par son nom (voir ci-dessous)
- Type : PluginAttributeContextType.SESSION
- Valeur : objet de type chaîne
Les données contenues dans AuthenticationContext sont utilisées par OAM pour un traitement ultérieur.
Les données d'assertion sont constituées des éléments suivants :
- Nom de partenaire IdP, référencé par
fed.partner - Format SAML NameID, référencé par
fed.nameidformat - La valeur NameID, référencée par
fed.nameidvalue - Attributs utilisateur contenus dans l'assertion, référencés par
fed.aLr.ATTRIBUTE_NAME, avecATTRIBUTE_NAME - Nom de l'attribut contenu dans l'assertion, si aucun profil d'attribut IdP n'a mis en correspondance le nom avec un nom d'attribut de session OAM local
- Nom de l'attribut de session OAM résultant de la mise en correspondance du nom de l'attribut dans l'assertion avec un nom d'attribut de session OAM local basé sur le profil d'attribut IdP utilisé pour le partenaire IdP.
Exemple
Prenons l'exemple suivant pour examiner les données renvoyées par le module d'extension AssertionProcessing à la fin du flux :
- OAM agit en tant que fournisseur de services
- Le partenaire IdP est un SAML 2.0 IdP enregistré en tant que
acmeIdPsur le serveur OAM/SP et l'ID fournisseur/émetteur du fournisseur d'identités esthttp://acme.com/idp - IdP envoie une assertion SAML 2.0 contenant
- NameID au format
urn:oasis:names:tc:SAML:1.1:nameidformat:emailAddress, la valeur étant l'adresse électronique de l'utilisateur - Trois attributs SAML
- Nom défini sur l'UID contenant
userID - Nom défini sur le nom contenant le nom de famille de l'utilisateur
- Nom défini sur le prénom contenant le prénom de l'utilisateur
Le partenaire IdP dans OAM/SP est lié à un profil d'attribut IdP avec une seule entrée, qui met en correspondance l'UID de nom d'attribut SAML avec l'UID de nom d'attribut de session OAM. Dans l'exemple, l'utilisateur de test sera l'un des deux suivants :
- UserID chez OAM/SP Alice
- Attributs envoyés dans l'assertion SAML :
- userID : alice
- lastname : Appleton
- firstname : Alice
- Adresse e-mail pour alice est
alice@oracle.com
Voici un exemple d'assertion SAML 2.0 :
<samlp:Response ..>
<saml:Issuer ...>hLp://acme.com/idp</saml:Issuer>
<samlp:Status>
<samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ...>
<saml:Issuer ...>hLp://acme.com/idp</saml:Issuer>
<dsig:Signature ...>
...
</dsig:Signature>
<saml:Subject>
<saml:NameID ...>alice@oracle.com</saml:NameID>
...
</saml:Subject> <saml:Conditions ...>
...
</saml:Conditions> <saml:AuthnStatement ...>
...
</saml:AuthnStatement>
<saml:AttributeStatement ...>
<saml:Attribute Name="userid" ...>
<saml:AttributeValue ...>alice</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="lastname" ...>
<saml:AttributeValue ...>Appleton</saml:AttributeValue> </saml:Attribute>
<saml:Attribute Name="firstname" ...>
<saml:AttributeValue ...>Alice</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
Après le traitement de l'assertion SAML 2.0 et la mise en correspondance de la réponse SSO entrante avec un enregistrement utilisateur local, le module d'extension AssertionProcessing renvoie à OAM le fichier AuthenticationContext avec les données suivantes : Objet contenant :
oracle.security.am.common.utilities.principal.OAMUserPrincipalavec le nom défini sur alice (userID local de l'alice)oracle.security.am.common.utilities.principal.OAMUserDNPrincipalavec le nom défini sur cn=alice,ou=users,dc=us,dc=oracle,dc=com (nom distinctif local d'alice)oracle.security.am.common.utilities.principal.OAMGUIDPrincipalavec le nom défini sur le GUID local de l'alice
Instances CredentialParam suivantes contenues dans l'objet d'informations d'identification de AuthenticationContext
KEY_USERNAME_DNavec la valeur définie surcn=alice,ou=users,dc=us,dc=oracle,dc=com(nom distinctif local d'alice)
Les instances PluginResponse suivantes contenues dans AuthenticationContext :
KEY_AUTHENTICATED_USER_NAMEavec une valeur de chaîne définie suralice(userID local de l'alice), avec un type défini sur littéralKEY_IDENTITY_STORE_REFavec une valeur de chaîne définie surIDStore(nom de la banque d'ID OAM locale), avec un type défini sur Littéralfed.partneravec une valeur de chaîne définie suracmeIdP(nom de partenaire IdP local), avec un type défini sur sessionfed.nameidformatavec une valeur de chaîne définie sururn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress, avec un type défini sur sessionfed.nameidvalueavec la valeur de chaîne définie sur alice@oracle.com, avec le type défini sur sessionfed.attr.uidavec la valeur de chaîne définie sur Alice, avec le type défini sur session (le nom de l'attribut a été mis en correspondance de userid à uid en raison du profil d'attribut IdP)fed.attr.lastnameavec une valeur de chaîne définie sur Appleton, avec un type défini sur sessionfed.attr.firstnameavec une valeur de chaîne définie sur Alice, avec le type défini sur session
Module d'extension d'authentification personnalisée
Présentation
Dans cet article, supposons que le déploiement OAM/SP doit prendre en charge :
- Création/provisionnement de comptes utilisateur lorsque l'utilisateur est redirigé vers OAM/SP mais n'a pas de compte local : le compte nouvellement créé est renseigné avec les données d'assertion SAML 2.0
- Mises à jour automatiques du compte utilisateur afin que les attributs utilisateur LDAP soient actualisés avec les dernières données d'assertion SAML 2.0.
Utilisation d'un module Just-In-Time User Provisioning qui prend en charge #1. Pour répondre aux exigences de #2, un plug-in d'authentification personnalisé est nécessaire qui :
- être appelé après un traitement réussi du module d'extension
AssertionProcessing - Examiner les données extraites de l'assertion SAML 2.0
- Se connecter à LDAP et mettre à jour les attributs utilisateur LDAP
Pour cet exemple, l'environnement est constitué des éléments suivants :
-
OAM en tant que fournisseur de services SAML 2.0
-
Le partenaire IdP est un SAML 2.0 IdP enregistré en tant que acmeIdP sur le serveur OAM/SP et l'ID fournisseur/émetteur du fournisseur d'identités est http://acme.com/idp
-
IdP envoie une assertion SAML 2.0 contenant
-
NameIDau formaturn:oasis:names:tc:SAML:1.1:nameidformat:emailAddress, la valeur étant l'adresse électronique de l'utilisateur -
Trois attributs SAML
-
Nom défini sur l'UID contenant userID
-
Nom défini sur le nom contenant le nom de famille de l'utilisateur
-
Nom défini sur le prénom contenant le prénom de l'utilisateur
-
Le partenaire IdP dans OAM/SP est lié à un profil d'attribut IdP avec une seule entrée, qui met en correspondance l'UID de nom d'attribut SAML avec l'UID de nom utilisateur de nom d'attribut de session OAM
Le module d'extension d'authentification personnalisé est constitué des éléments suivants :
- Une classe Java étendant la classe
oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn - Fichier
MANIFEST.MFdécrivant les classes Java - Un fichier XML décrivant le module d'extension
Ces trois éléments sont regroupés dans un fichier JAR qui est ensuite téléchargé vers le serveur OAM via la console d'administration OAM. Une fois téléchargé et activé, modifiez le module d'authentification de fédération.
Classe Java
La classe implémentant le plug-in d'authentification personnalisé doit respecter les règles suivantes :
-
Etendre la classe
oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn -
Mettez en oeuvre les méthodes suivantes :
-
Le processus
public ExecutionStatus(contexte AuthenticationContext) génèreAuthenticationException -
Doit renvoyer un statut (échec ou réussite)
-
Dans cet exemple, cette méthode extrait les données d'assertion et le DN utilisateur se connecte à LDAP et met à jour les attributs d'enregistrement utilisateur en fonction des données d'assertion
-
public String getPluginName()renvoie le nom du module d'extension personnalisé Dans notre exemple, il renvoieCustomAttributesUpdatePlugin -
public String getDescription()renvoie une description du module d'extension d'authentification personnalisé Dans notre exemple, il renvoieCustom Attributes Update Plugin -
public Map<String, MonitoringData> getMonitoringData()N'est pas utilisé dans un flux de module d'extension d'authentification et, dans notre exemple, il renvoie la valeur NULL -
public boolean getMonitoringStatus()Non utilisé dans un flux de module d'extension d'authentification Dans notre exemple, il renvoie False -
public int getRevision()doit avoir la même valeur que la version spécifiée dans le fichier manifeste. Dans notre exemple, la valeur renvoyée est 10. -
public void setMonitoringStatus(boolean status)Non utilisé dans un flux de module d'extension d'authentification Dans notre exemple, cette méthode sera vide
Le code suivant est un exemple de plug-in personnalisé.
package postsp;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.security.auth.Subject;
import oracle.security.am.common.utilities.principal.OAMUserDNPrincipal;
import oracle.security.am.common.utilities.principal.OAMUserPrincipal;
import oracle.security.am.plugin.ExecutionStatus;
import oracle.security.am.plugin.MonitoringData;
import oracle.security.am.plugin.PluginAttributeContextType;
import oracle.security.am.plugin.PluginResponse;
import oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn;
import oracle.security.am.plugin.authn.AuthenticationContext;
import oracle.security.am.plugin.authn.AuthenticationException;
public class CustomAttributesUpdatePlugin extends
AbstractAuthenticationPlugIn
{
public ExecutionStatus process(AuthenticationContext context)
throws AuthenticationException {
// user's ID and DN. Note: we are not making necessary checks for size/null to
// keep the sample code minimal.
Subject subject = context.getSubject();
Set<OAMUserPrincipal> principalsUserID =
subject.getPrincipals(OAMUserPrincipal.class);
Set<OAMUserDNPrincipal> principalsDN =
subject.getPrincipals(OAMUserDNPrincipal.class);
String localUserID =
(String)principalsUserID.iterator().next().getName();
String localUserDN = (String)principalsDN.iterator().next().getName();
// get the assertion data. Note: We are not making necessary checks for size/null to
// keep the sample code minimal.
PluginResponse partnerResponse = context.getResponse( PluginAttributeContextType.SESSION, "fed.partner");
String partnerName = (String)partnerResponse.getValue(); PluginResponse nameIDResponse = context.getResponse(
PluginAttributeContextType.SESSION, "fed.nameidvalue");
String nameID = (String)nameIDResponse.getValue();
PluginResponse uidResponse = context.getResponse(
PluginAttributeContextType.SESSION, "fed.aLr.uid");
String uid = (String)uidResponse.getValue();
PluginResponse firstnameResponse = context.getResponse(
PluginAttributeContextType.SESSION, "fed.aLr.firstname");
String firstname = (String)firstnameResponse.getValue(); PluginResponse lastnameResponse = context.getResponse(
PluginAttributeContextType.SESSION, "fed.aLr.lastname");
String lastname = (String)lastnameResponse.getValue();
try {
// open ldap connection
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://host:port");
env.put(Context.SECURITY_PRINCIPAL, "admin");
env.put(Context.SECURITY_CREDENTIALS, "password"); DirContext ldapContext = new InitialDirContext(env);
// modify user ldap record. Note: We are not making the necessary checks to
// keep the sample code minimal.
Attributes attributes = new BasicAttributes();
attributes.put(new BasicAttribute("givenname", firstname));
attributes.put(new BasicAttribute("sn", lastname));
attributes.put(new BasicAttribute("mail", nameID));
attributes.put(new BasicAttribute("uid", uid));
ldapContext.modifyAttributes(localUserDN,
DirContext.REPLACE_ATTRIBUTE, attributes);
}
catch (NamingException ex) {
throw new AuthenticationException(ex);
}
// return success, so that OAM can resume the flow
return ExecutionStatus.SUCCESS;
}
public String getPluginName() {
return "CustomAttributesUpdatePlugin";
}
public String getDescription() {
return "Custom Attributes Update Plugin";
}
public Map<String, MonitoringData> getMonitoringData() {
return null;
}
public boolean getMonitoringStatus() {
return false;
}
public int getRevision() {
return 10;
}
public void setMonitoringStatus(boolean arg0) {
} }
Fichier d'inscription de plug-in
Le module d'extension d'authentification personnalisé doit être défini dans un fichier XML de module d'extension tel que :
<Plugin type="Authentication">
<author>uid=admin</author>
<email>admin@example</email>
<creationDate>08:00:00,2014-01-15</creationDate>
<description>Custom Attributes Update Plugin</description>
<conhguration>
</conhguration>
</Plugin>
Remarque importante : le fichier XML doit porter le même nom que la classe implémentant le module d'extension, dans ce cas CustomAttributesUpdatePlugin.xml
Pour plus d'informations, reportez-vous au guide du développeur OAM.
Fichier manifeste
Avant de packager le module d'extension d'authentification personnalisé dans un fichier JAR, vous devez définir un élément MANIFEST.MF tel que : Manifest-Version : 1.0 Bundle-ManifestVersion : 2 Bundle-Name : CustomAttributesUpdatePlugin Bundle-SymbolicName : CustomAttributesUpdatePlugin Bundle-Version : 10 Bundle-Activator : postsp.CustomAttributesUpdatePlugin Import-Package : org.osgi.framework ;version="1.3.0",oracle.security.am.plugin,oracle.security.am.plugin.authn,oracle.security.am.common.utilities.principal,javax.naming,javax.naming.directory,javax.security.auth Bundle-RequiredExecutionEnvironment : JavaSE-1.6
Pour plus d'informations, reportez-vous au guide du développeur OAM.
Remarque : le fichier manifeste doit inclure la propriété Import-Package qui répertorie tous les packages utilisés dans le module d'extension.
Création du module d'extension
Compilation
Les fichiers JAR suivants du déploiement OAM doivent être utilisés pour la compilation :
- felix.jar
- oam-plugin.jar
- utilities.jar
Ces fichiers se trouvent aux emplacements suivants :
- felix.jar :
$IAM_HOME/oam/server/lib/plugin/felix.jar - oam-plugin.jar :
$IAM_HOME/oam/server/lib/plugin/oamplugin.jar - utilities.jar :
$IAM_HOME/oam/server/lib/plugin/utilities.jar
Dans cet exemple, nous plaçons le fichier CustomAttributesUpdatePlugin.java dans un dossier src/postsp :
bash-4.1$ ls -l src/postsp/ total 4
-rw-r--r-- 1 root root 4377 Oct 1 09:54 CustomAttributesUpdatePlugin.java
Pour compiler, exécutez la commande suivante :
$JDK_HOME/bin/javac -cp $IAM_HOME/oam/server/lib/plugin /felix.jar:$IAM_HOME/oam/server/lib/plugin/oam-
plugin.jar:$IAM_HOME/oam/server/lib/plugin/utilities.jar src/postsp /\*.java
Packaging du module d'extension personnalisé
Nous avons créé MANIFEST.MF dans le répertoire en cours en fonction du contenu répertorié dans la section précédente et CustomAttributesUpdatePlugin.xml dans le répertoire src, qui contient la définition de module d'extension répertoriée dans la section précédente.
find
.
./MANIFEST.MF
./src
./src/userauthn
./src/userauthn/CustomAttributesUpdatePlugin.class
./src/userauthn/CustomAttributesUpdatePlugin.java
./src/CustomAttributesUpdatePlugin.xml
Pour créer le fichier JAR CustomAttributesUpdatePlugin.jar qui contient le module d'extension et les fichiers requis, exécutez la commande suivante :
jar cfvm CustomAttributesUpdatePlugin.jar MANIFEST.MF -C src/ . added manifest adding: CustomAttributesUpdatePlugin.xml(in = 238) (out= 158)(deflated 33%) adding: postsp/(in = 0) (out= 0)(stored 0%) adding: postsp/CustomAttributesUpdatePlugin.java(in = 4377) (out= 1206)(deflated 72%) adding: postsp/CustomAttributesUpdatePlugin.class(in = 3726) (out= 1667)(deflated 55%)
Cette opération crée CustomAttributesUpdatePlugin.jar. Pour visualiser le contenu du fichier :
unzip -l CustomAttributesUpdatePlugin.jar Archive: CustomAttributesUpdatePlugin.jar
| Longueur | Date | Heure | Nom |
|---|---|---|---|
| 0 | 10-01-2014 | 10:04 | MÉTA-INF/ |
| (542) | 10-01-2014 | 10:04 | MÉTA-INF/MANIFEST.MF |
| (238) | 10-01-2014 | 09:11 | CustomAttributesUpdatePlugin.xml |
| 0 | 10-01-2014 | 09:59 | postsp/ |
| (4377) | 10-01-2014 | 09:54 | postsp/CustomAttributesUpdatePlugin.java |
| (3726) | 10-01-2014 | 09:54 | postsp/CustomAttributesUpdatePlugin.class |
| (8883) | 6 |
Remarque importante : le fichier JAR doit porter le même nom que la classe implémentant le module d'extension, dans ce cas
CustomAttributesUpdatePlugin.jar
Déploiement du module d'extension d'authentification personnalisée
Pour déployer le module d'extension d'authentification personnalisé dans OAM, procédez comme suit :
- Accédez à la console d'administration OAM :
http(s)://oam-adminhost:oam-admin-port/oamconsole - Accédez à Access Manager, Plug-ins
- Cliquez sur Importer le plug-in.
- Sélectionnez le fichier JAR de module d'extension (
CustomAttributesUpdatePlugin.jardans cet exemple).

Description de l'illustration Specifying_Plug-in_JAR_file.png
Le module d'extension sera à l'état téléchargé :

Description de l'illustration Plug-in_loaded_Screen.png
Vous devez distribuer le module d'extension aux serveurs OAM d'exécution et l'activer :
- Sélectionner le module d'extension
- Cliquez sur Distribuer la sélection L'onglet Statut d'activation du module d'extension affiche l'état du module d'extension

Description de l'illustration Plug-in_Screen_with_Status.png
Vous devez activer le plugin :
- Sélectionner le module d'extension
- Cliquez sur Activer la sélection L'onglet Statut d'activation du module d'extension affiche l'état du module d'extension

Description de l'illustration Plug-in_Screen_with_Status_Activated.png
Créer le module d'authentification
Créez un module d'authentification de fédération basé sur le module d'authentification FederationPlugin existant, qui diffère du module existant :
-
CustomAttributesUpdatePluginest l'étape appelée après un résultat de succès du module d'extensionAssertionProcessing. -
Orchestration :
-
En cas de succès, la correspondance sera établie
-
En cas d'échec sera mis en correspondance avec un échec
-
En cas d'erreur sera mappé avec l'échec
Pour créer un module d'authentification, procédez comme suit :
- Accédez à la console d'administration OAM :
http(s)://oam-adminhost: oam-admin-port/oamconsole - Accédez à Access Manager, Modules d'authentification.
- Cliquez sur Créer un module d'authentification.
- Sélectionnez Créer un module d'authentification personnalisé.
- Entrez un nom (
CustomFedModule, par exemple)

Description de l'image Creating_Authentication_Module.png
Pour ajouter des étapes au nouveau module d'authentification, procédez comme suit :
- Cliquez sur l'onglet Etapes.
- Cliquez sur Ajouter pour ajouter l'étape
FedAuthnRequestPlugin: - Nom de l'échelon :
FedAuthnRequestPlugin - Nom de module d'extension :
FedAuthnRequestPlugin - Cliquez sur OK.
- Cliquez sur Ajouter pour ajouter l'étape
AssertionProcessing: - Nom de l'échelon :
AssertionProcessing - Nom de module d'extension :
FedUserAuthenticationPlugin - Cliquez sur OK.
- Cliquez sur Ajouter pour ajouter l'étape
AttributesUpdate: - Nom de l'échelon :
AttributesUpdate - Nom de module d'extension :
CustomAttributesUpdatePlugin - Cliquez sur OK.

Description de l'image Add_Authentication_Module.png

Description de l'image Add_Assertion_Processing_Screen.png

Description de l'image Attributes_Update_Screen.png
L'onglet Etapes affiche :

Description de l'image Steps_Screen.png
Pour définir l'orchestration des étapes pour le nouveau module d'authentification, procédez comme suit :
- Cliquez sur l'onglet Orchestration des étapes Sélectionnez
FedAuthnRequestPlugincomme étape initiale deFedAuthnRequestPlugin: - Sélectionner une réussite en cas de succès
- Sélectionnez
AssertionProcessingpour Sur échec Sélectionner échec pour Sur erreur - Pour
AssertionProcessing: - Sélectionnez
AttributesUpdatepour On Success. - Sélectionner un échec pour Sur échec Sélectionner un échec pour Sur erreur
- Pour
AttributesUpdate: - Sélectionner une réussite en cas de succès
- Sélectionner un échec en cas d'échec
- Echec de la sélection pour Sur erreur
- Cliquez sur Appliquer

Description de l'image Define_Orchestration_Screen.png
Modèle d'authentification
Avant de pouvoir protéger les ressources avec une stratégie d'authentification qui utilise le nouveau module d'authentification, un nouveau modèle d'authentification doit être créé, référençant ce nouveau module personnalisé. Cette opération est obligatoire, car la stratégie d'authentification est liée à un modèle d'authentification et non à un module d'authentification. Pour créer un nouveau modèle d'authentification pour ce module personnalisé, procédez comme suit :
- Accédez à la console d'administration OAM :
http(s)://oam-adminhost:oam-admin-port/oamconsole - Accédez à Access Manager, Modèles d'authentification.
- Cliquez sur Create Authentication Scheme.
- Entrez un nom (par exemple,
CustomFedScheme) et une description Définissez le niveau d'authentification sur une valeur acceptable (2 dans cet exemple). - Sélectionnez
FORMcomme méthode de défi. - Définissez l'URL de redirection de défi (dans cet exemple, nous la définissons sur
/oam/server/). - Sélectionnez le nouveau module d'authentification personnalisé (
CustomFedModuledans l'exemple) - Définissez l'URL de défi (
/pages/servererror.jspdans cet exemple). - Définissez le type de contexte (
customWarpar exemple) - Définir la valeur contextuelle (
/oamici, car nous n'utilisons aucune page) - Entrez au moins les informations suivantes pour les paramètres de question de vérification :
- initial_command =AUCUN
- is_rsa=vrai
- Cliquez sur Appliquer

Description de l'image Authentication_Schemes_Screen.png
Tester
Protéger une ressource avec une stratégie d'authentification à l'aide du modèle d'authentification nouvellement créé. Le module d'authentification personnalisé est appelé. Avant SSO de fédération, l'enregistrement utilisateur LDAP pour Alice dans OAM/SP est le suivant :
dn: cn=alice,ou=users,dc=us,dc=oracle,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
givenName: al
title: manager
uid: alice
cn: alice
sn: APPLETON
userPassword:: e1NTSEE1MTJ9TXp0R2d0Si9GT1NzYUxvRXJqZW0rM1Q2eU5QMW9ZZmZ2Y3FkVWpaS1o1OFNGMy95ZDBueUxUbnllRi83SFRtS2JmOTJ0anY4TFd6di9UanliOGw4WFNQV1BxSnF3N mail: alice@oracle.com
Après l'authentification, IdP envoie les informations suivantes pour l'application utilisateur dans l'assertion SAML 2.0 :
- Attributs SAML :
- userID : alice
- lastname : Appleton
- prénom : Alice
- SAML NameID : alice@oracle.com
Après l'accès avec connexion unique (SSO) de fédération, l'utilisateur CustomAttributesUpdatePlugin doit mettre à jour l'enregistrement LDAP de l'entité de sorte que sn, gelenname, uid et mail soient définis sur les valeurs de l'assertion SAML. L'enregistrement utilisateur LDAP pour Alice après l'opération SSO de fédération dans OAM/SP est désormais :
dn: cn=alice,ou=users,dc=us,dc=oracle,dc=com
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
givenName: Alice
title: manager
uid: alice
cn: alice
sn: Appleton
userPassword:: e1NTSEE1MTJ9TXp0R2d0Si9GT1NzYUxvRXJqZW0rM1Q2eU5QMW9ZZmZ2Y3FkVWpaS1o1OFNGMy95ZDBueUxUbnllRi83SFRtS2JmOTJ0anY4TFd6di9UanliOGw4WFNQV1BxSnF3N
mail: alice@oracle.com
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuite sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour consulter la documentation du produit, visitez le site Oracle Help Center.
Custom Post-Authentication Module in OAM and SP
F60230-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.