Détermination de la valeur IdP à utiliser pour l'accès avec connexion unique (SSO) Federation
En tant que fournisseur de services, lors du déclenchement d'une opération SSO de fédération, la principale difficulté consiste parfois à déterminer quel élément IdP doit être sélectionné pour le flux SSO, dans les cas où le fournisseur de services dispose d'accords de confiance avec plusieurs éléments IdPs.
OAM/SP dispose d'un mécanisme différent permettant de sélectionner IdP pour l'opération SSO de fédération, notamment :
-
Disposant du modèle de fédération OAM indiquant la valeur IdP à utiliser
-
Le module d'extension d'authentification OAM personnalisé définit la valeur IdP à utiliser
-
Utilisation d'un service de repérage SAML 2.0 IdP si IdP n'a pas été spécifié par le modèle ni par un module d'extension personnalisé
-
Utilisation de l'accès avec connexion unique par défaut IdP si aucun service de repérage IdP n'est utilisé
La section suivante présente chaque mécanisme en détail.
Système de fédération OAM
OAM fournit des outils d'administration permettant de créer un modèle d'authentification OAM qui sera :
-
Un schéma de fédération
-
Lié à un partenaire IdP spécifique
Lorsqu'une ressource est protégée avec ce type de modèle d'authentification et qu'un utilisateur non authentifié demande l'accès, un flux SSO de fédération est déclenché avec le partenaire IdP auquel le modèle est lié.
La création de tels schémas permet à un administrateur de disposer de ressources spécifiques qui aboutissent à un SSO de fédération avec des partenaires IdP spécifiques.
Remarque : si l'utilisateur est déjà authentifié avec une session valide dont le niveau est suffisamment élevé, l'accès aux ressources protégées par d'autres modèles de fédération risque de ne pas générer de nouveau SSO de fédération.
Console d'administration OAM
Pour créer un modèle d'authentification OAM pour un partenaire IdP spécifique, procédez comme suit :
-
Accédez à la console d'administration OAM :
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Accédez à Fédération d'identités, Administration des fournisseurs de services.
-
Ouvrez le partenaire IdP pour lequel vous souhaitez créer le schéma.
-
Cliquez sur le bouton Créer un modèle et un module d'authentification.
Description de l'image OAM_Admin_Console.jpg
La console d'administration OAM crée les éléments suivants :
-
Module d'authentification OAM lié au partenaire IdP nommé
<PARTNER_NAME>FederationPlugin
. -
Modèle d'authentification OAM lié au module d'authentification OAM nouvellement créé nommé
<PARTNER_NAME>FederationScheme
.
Description de l'image OAM_Admin_Console_with_message.jpg
Commande WLST
Pour créer un modèle d'authentification OAM pour un partenaire IdP spécifique à l'aide de la commande OAM WLST createAuthnSchemeAndModule()
, procédez comme suit :
-
Entrez dans l'environnement WLST en exécutant :
$IAM_ORACLE_HOME/common/bin/wlst.sh
. -
Connectez-vous au serveur d'administration WLS :
connect()
. -
Accédez au branchement d'exécution de domaine :
domainRuntime()
. -
Exécutez la commande
createAuthnSchemeAndModule()
: indiquez le nom du partenaire IdP. Exemple :createAuthnSchemeAndModule("AcmeIdP")
. -
Quittez l'environnement WLST :
exit()
.
Remarque : pour supprimer ce modèle/module de fédération, exécutez la commande OAM WLST
deleteAuthnSchemeAndModule()
.
Protection d'une ressource
Pour protéger une ressource avec un <PARTNER_NAME>FederationScheme
qui déclenche SSO de fédération avec ce partenaire IdP spécifique, exécutez la procédure suivante :
-
Accédez à la console d'administration OAM :
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Accédez à Access Manager , Domaine d'application.
-
Cliquez sur Rechercher et ouvrez le domaine d'application contenant les ressources à protéger avec le nouvel élément
FederationScheme
. -
Cliquez sur l'onglet Stratégies d'authentification.
-
Créez une nouvelle stratégie d'authentification ou modifiez une stratégie existante.
-
Sélectionnez le nouveau
FederationScheme
. -
Cliquez sur Appliquer.
Description de l'image Authentication_Policies.jpg
Après avoir effectué cette modification, chaque fois qu'un utilisateur demande des ressources protégées par cette stratégie d'authentification et que l'utilisateur doit être authentifié, une authentification unique de fédération est exécutée avec le partenaire IdP spécifique (AcmeIdP dans cet exemple).
Module d'extension d'authentification OAM personnalisé
Présentation
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, 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-admin-host:oam-adminport/oamconsole
. -
Accédez à Gestionnaire d'accès, Modules d'authentification.
-
Ouvrez
FederationScheme
. -
Cliquez sur l'onglet des étapes 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 Steps_Orchestration.jpg
Implémentation d'un module d'extension personnalisé
Un module d'extension personnalisé peut être implémenté en fonction de la structure de module d'extension d'authentification personnalisée OAM qui détermine le fichier IdP à utiliser pour une opération SSO de fédération spécifique :
-
Le plug-in détermine quel IdP doit être utilisé via une approche spécifique (cookie, sélection d'utilisateur via une page, programmation...)
-
Une fois la sélection effectuée, le module d'extension doit enregistrer le nom du partenaire IdP dans l'instance d'informations d'identification enregistrée dans
AuthenticationContext
-
Le module d'extension renvoie un statut de réussite
-
OAM appelle le module d'extension suivant (
FedAuthnRequestPlugin
) qui extrait le nom de partenaire IdP à partir deAuthenticationContext
-
Le SSO de fédération est démarré avec ce IdP
Le code permettant d'enregistrer le nom du partenaire IdP dans AuthenticationContext
se présente comme suit :
public ExecutionStatus
process(AuthenticationContext context)
{
...
CredentialParam param = new CredentialParam();
param.setName("KEY_FEDIDP");
param.setType("string");
param.setValue(IDP_PARTNER_NAME);
context.getCredential().addCredentialParam("KEY_FEDIDP", param);
...
return ExecutionStatus.SUCCESS;
}
Une fois le plug-in implémenté :
-
Il doit être packagé, chargé, distribué et activé.
-
Un nouveau module d'authentification doit être créé avec trois modules d'extension
-
Le module d'extension personnalisé
-
FedAuthnRequestPlugin
-
AssertionProcessing
-
-
L'orchestration doit être définie avec :
-
Le plug-in personnalisé étant le plug-in personnalisé de l'étape initiale :
-
En cas de succès,
FedAuthnRequestPlugin
est appelé -
En cas d'échec, l'échec est renvoyé en cas d'erreur
-
-
FedAuthnRequestPlugin :
-
En cas de succès, la réussite doit être renvoyée
-
En cas d'échec, AssertionProcessing doit être appelé
-
En cas d'erreur, l'échec doit être renvoyé
-
-
Module d'extension personnalisé :
-
En cas de succès, la réussite doit être renvoyée
-
En cas d'échec, l'échec doit être renvoyé en cas d'erreur, l'échec doit être renvoyé
-
-
-
Un modèle d'authentification OAM doit être créé à l'aide du nouveau module d'authentification OAM. Le nouveau régime doit être similaire à OOTB FederationScheme.
Enfin, vous pouvez protéger les ressources à l'aide du nouveau modèle OAM, qui utilise les modules d'authentification personnalisés pour effectuer l'opération SSO de fédération.
Remarque : pour plus d'informations sur les modules d'extension personnalisés, reportez-vous au guide du développeur OAM.
IdP Service de repérage
Présentation
La spécification SAML 2.0 "Identity Provider Discovery Service Protocol and Profile" permet aux SP SAML 2.0 de déléguer la sélection IdP à un service distant.
Le flux est décrit dans la spécification SAML 2.0 et comprend les étapes suivantes :
-
Le SP est configuré pour utiliser un service de repérage IdP distant afin de déterminer le fichier IdP à utiliser pour l'opération SSO de fédération.
-
Le SP redirige l'utilisateur vers le service de découverte IdP via un réacheminement HTTP 302 et fournit les paramètres suivants dans la chaîne de requête.
-
entityID
: émetteur/ProviderID d'OAM/SP -
returnIDParam
: nom du paramètre de chaîne de requête que le service doit utiliser pour le paramètre contenant la valeur IdP ProviderID, lors du réacheminement de l'utilisateur vers OAM/SP -
return
: URL à utiliser pour rediriger l'utilisateur vers OAM/SP
-
-
Le service détermine la valeur IdP à utiliser.
-
Le service redirige l'utilisateur vers OAM/SP via un réacheminement HTTP 302 basé sur le paramètre de requête "return" spécifié par le SP et fournit les paramètres suivants dans la chaîne de requête.
-
Paramètre de requête contenant la valeur IdP ProviderID. Le nom de ce paramètre de requête est indiqué par le processeur de service dans le paramètre de requête returnIDParam.
-
Configuration d'OAM/SP
Vous pouvez configurer OAM/SP pour qu'il utilise n'importe quel service de repérage IdP distant. OAM inclut un service de repérage IdP simple qui est utilisé et permet à l'utilisateur de choisir le IdP avec lequel effectuer l'authentification unique de fédération. Pour configurer OAM/SP afin qu'il utilise un service de repérage IdP, procédez comme suit :
-
Entrez dans l'environnement WLST en exécutant :
$IAM_ORACLE_HOME/common/bin/wlst.sh
. -
Connectez-vous au serveur d'administration WLS :
connect()
. -
Accédez au branchement d'exécution de domaine :
domainRuntime()
. -
Activez/désactivez OAM/SP pour utiliser un service de repérage IdP :
putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "true/false")
.-
Pour activer :
putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "true")
-
Pour désactiver
putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "false")
-
-
Définissez l'emplacement du service de repérage IdP distant :
putStringProperty("/spglobal /idpdiscoveryserviceurl", "URL")
. -
Remplacer l'URL par l'emplacement du service.
-
Pour le service de repérage IdP simple intégré, remplacez l'URL par
/oamfed/discovery.jsp
(il s'agit de la valeur OOTB pour cette propriété) :putStringProperty("/spglobal /idpdiscoveryserviceurl", "/oamfed/discovery.jsp")
. -
Pour un service distant, par exemple :
putStringProperty("/spglobal /idpdiscoveryserviceurl", "http://sp.com/discovery")
.
-
-
Quittez l'environnement WLST :
exit()
.
Pour utiliser le service de repérage IdP simple intégré, procédez comme suit :
-
Entrez dans l'environnement WLST en exécutant :
$IAM_ORACLE_HOME/common/bin/wlst.sh
. -
Connectez-vous au serveur d'administration WLS :
connect()
. -
Accédez au branchement d'exécution de domaine :
domainRuntime()
. -
Activez/désactivez le service de repérage IdP intégré :
putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "true/false")
.-
Pour l'activer :
putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "true")
. -
Pour désactiver
putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "false")
.
-
-
Quittez l'environnement WLST :
exit()
.
Tester
Dans mon environnement de test, j'ai trois fichiers IdPs :
-
AcmeIdP : SAML 2.0 IdP
-
Google : le Google OpenID OP
-
Yahoo : the Yahoo OpenID OP
OAM/SP est configuré pour :
-
Utilisation d'un service de repérage IdP
-
Redirigez l'utilisateur vers le service de repérage IdP simple intégré.
-
Activation du service de repérage IdP simple intégré
Si l'utilisateur demande l'accès à une ressource protégée par l'option FederationScheme
, le service de repérage IdP simple intégré invite l'utilisateur à sélectionner une option IdP pour effectuer l'accès SSO de fédération avec :
Description de l'image Access_Manager.jpg
Fournisseur d'identités SSO par défaut
Si aucune des méthodes précédentes n'est utilisée pour indiquer le IdP à utiliser pour l'accès avec connexion unique de fédération, OAM/SP utilise le partenaire IdP marqué comme fournisseur d'identités SSO par défaut.
Console d'administration OAM
Pour indiquer qu'un partenaire IdP spécifique doit être le fournisseur d'identités SSO par défaut via la console d'administration OAM, procédez comme suit :
-
Accédez à la console d'administration OAM :
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Accédez à Fédération d'identités, Administration des fournisseurs de services.
-
Ouvrez le partenaire IdP.
-
Cochez la case Partenaire de fournisseur d'identités par défaut.
-
Cliquez sur Appliquer.
Description de l'image Default_Identity_Provider.jpg
Commande WLST
Pour indiquer qu'un partenaire IdP spécifique doit être le fournisseur d'identités SSO par défaut à l'aide de la commande OAM WLST setDefaultSSOIdPPartner()
, procédez comme suit :
-
Entrez dans l'environnement WLST en exécutant :
$IAM_ORACLE_HOME/common/bin/wlst.sh
. -
Connectez-vous au serveur d'administration WLS :
connect()
. -
Accédez au branchement d'exécution de domaine :
domainRuntime()
. -
Exécutez la commande
setDefaultSSOIdPPartner()
. -
Indiquez le nom du partenaire IdP. Exemple :
setDefaultSSOIdPPartner("AcmeIdP")
. -
Quittez l'environnement WLST :
exit()
.
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.
Determining which IdP to use for Federation
F60233-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.