Proxy Federation dans OAM et IdP
Cet article explique le concept de proxy de fédération et explique comment configurer facilement IdP pour qu'il devienne un processeur de service et qu'il délègue l'authentification à un autre IdP distant au lieu d'authentifier l'utilisateur localement.
Le proxy Federation est généralement utilisé lorsqu'un hub de fédération agit comme suit :
-
IdP pour les partenaires SP, où IdP agrège l'approbation de fédération entre ces SP et lui-même
-
Un SP avec des partenaires IdP distants
Cette approche a l'avantage de :
-
Réduction des frais de gestion de la confiance
-
Chaque nouveau partenaire IdP ajouté au hub de fédération est automatiquement disponible pour tous les partenaires SP intégrés au hub de fédération
-
Il n'est pas nécessaire de définir chaque nouveau partenaire de fournisseur de services ajouté au hub de fédération sur les partenaires IdP
-
Fournir un modèle d'approbation de fédération en couches, dans lequel le hub de fédération masque le déploiement de fédération aux partenaires IdP
Modèle de confiance directe
Dans ce modèle, les différents serveurs Federation se font confiance directement et aucune entité intermédiaire ne joue le rôle de proxy.
Ce modèle a l'avantage de réduire la complexité des flux de fédération, car seuls deux serveurs sont impliqués dans l'opération SSO, mais il a parfois l'inconvénient de créer un énorme surcroît de gestion que les partenaires pourraient ne pas accepter.
Prenons l'exemple d'une entreprise internationale appelée ACME Corp, qui a des bureaux dans le monde entier. La structure de l'entreprise est composée de trois grandes organisations représentant une région différente du monde, et chaque organisation est responsable de son domaine de sécurité :
- Amérique du Nord et du Sud
- Européen
- Asie-Afrique-Pacifique
Chaque organisation dispose de son propre domaine de sécurité, ce qui signifie :
- Un ensemble de ressources
- Un serveur SSO
- Serveur de fédération Les entités d'une organisation sont indépendantes de celles d'une autre organisation. Ainsi, l'authentification dans un domaine ne vous donne pas accès aux ressources d'un autre domaine tant que l'authentification n'a pas été effectuée dans cet autre domaine.
Maintenant, disons qu'ACME Corp veut avoir un accord de fédération en place avec certains fournisseurs de services, dont certains sont des fournisseurs, d'autres des services achetés par ACME Corp, tels qu'un service d'appel de conférence, ainsi qu'un service Webex.
Pour établir une fédération entre les différentes organisations ACME Corp et les SP, le serveur Federation de chaque organisation doit établir une relation de confiance avec chaque SP distant :
-
Le nombre d'établissements de fiducie doit être élevé
-
Les partenaires SP pourraient refuser ce type d'établissement de confiance, compte tenu du nombre élevé d'accords de fédération impliqués pour un seul client
Ce diagramme représente tous les accords qui devraient être mis en place :
Description de l'image Direct_Trust_Model.jpg
Cette approche est généralement évitée, car elle publie au partenaire la complexité interne de l'infrastructure d'ACME Corp.
Les protocoles SSO et SAML de fédération ont été définis pour permettre à deux domaines de sécurité distincts d'effectuer un SSO interdomaine d'une manière qu'un partenaire n'aurait pas besoin de connaître sur l'implémentation et le déploiement de la sécurité de l'autre partenaire. Dans ce cas, il devient évident que cette promesse est rompue et que la complexité des choix de sécurité d'ACME Corp a un impact sur les partenaires SP.
Modèle de confiance par courtage
Dans ce modèle, il existe le concept de proxy de fédération dans lequel certaines entités doivent être utilisées pour agir en tant que proxies/SP afin d'effectuer des opérations SSO de fédération pour le compte d'autres SP.
Si nous reprenons notre exemple d'ACME Corp, l'approche correcte pour implémenter Federation SSO avec d'autres partenaires SP est via un modèle de sécurisation par courtage ou un proxy de fédération, où :
-
Un nouveau serveur sera installé dans ACME Corp en tant que hub de fédération
-
L'instance Federation Hub sert de fournisseur de services à l'adresse IdPs interne d'ACME Corp.
-
Le hub de fédération agit en tant que IdP pour les SP externes (fournisseurs, téléconférence et webex)
-
Lors d'une opération SSO de fédération, au lieu de demander directement à l'utilisateur, le hub agit en tant que fournisseur de services et déclenche une opération SSO de fédération avec une adresse interne distante IdP
Cette approche est plus conforme à la philosophie Federation/SAML, où les partenaires externes ignorent l'infrastructure de sécurité et les composants d'ACME Corp, et interagissent uniquement avec un seul IdP.
Cette solution résout également la surcharge de gestion élevée lorsque le nombre d'accords était particulièrement élevé et que toute mise à jour de l'accord était un processus long. Avec cette approche :
-
Les accords de fédération sont conclus entre le hub et IdPs interne, et entre le hub et les SP externes
-
L'ajout d'un élément IdP interne sera invisible pour les SP externes
-
L'ajout d'un SP externe est invisible pour l'élément IdPs interne
-
La mise à jour de l'accord de fédération (par exemple, pour le report de clé) sera une opération unique et non répétée plusieurs fois
Le schéma suivant représente les accords de fédération requis dans un modèle de sécurisation par broker (ou proxy de fédération) :
Description de l'image Brokered_Trust_Model.jpg
Proxy de fédération dans OAM
L'objectif d'un proxy Federation est de transformer l'élément IdP en SP afin que, lors de la réception d'une demande SSO d'un premier SP distant, au lieu d'interroger localement l'utilisateur, l'élément IdP devienne un SP et déclenche une nouvelle opération SSO de fédération avec un second élément IdP distant.
Une fois la deuxième opération SSO de fédération terminée, le proxy IdP a identifié l'utilisateur et peut créer une réponse SSO pour le SP d'origine.
OAM prend en charge Federation Proxy Now pour tous les protocoles :
-
SAML 2.0, SAML 1.1 et OpenID 2.0
-
Le protocole entre le SP d'origine et IdP est le même que celui utilisé entre OAM/SP et la seconde instance distante IdP
-
Le protocole entre le SP d'origine et IdP est différent de celui utilisé entre OAM/SP et la seconde instance distante IdP
Un SP peut donc effectuer une connexion unique de fédération avec IdP via SAML 1.1, et IdP devient un SP et une connexion unique de fédération avec une seconde connexion unique distante IdP via SAML 2.0. Le SP d'origine n'a pas besoin de connaître le protocole utilisé entre OAM/SP et le second IdP, ni même qu'une seconde opération SSO de fédération a eu lieu.
Dans un proxy de fédération maintenant, IdP peut être configuré pour "transférer" la méthode d'authentification de fédération indiquée dans le deuxième SSO de fédération vers le SP d'origine.
Configurer OAM pour le proxy Federation
Comme indiqué précédemment, IdP utilise OAM pour l'authentification de l'utilisateur : à chaque fois qu'une opération SSO de fédération a lieu, IdP appelle OAM en indiquant un modèle d'authentification, afin de s'assurer que l'utilisateur est authentifié correctement et de le mettre en question si nécessaire.
Comme vous le savez, OAM définit des modèles spécifiques qui sont liés à OAM/SP : si un utilisateur non authentifié demande l'accès à une ressource protégée par un FederationScheme
(ou un modèle utilisant un module d'authentification semblable à FederationPlugin
), OAM appelle OAM/SP qui déclenche une opération SSO de fédération avec un IdP distant.
Par conséquent, pour que IdP fasse un proxy de fédération maintenant, au lieu que IdP appelle OAM avec un modèle d'authentification local, IdP doit être appelé avec FederationScheme
. A partir de là :
-
OAM appelle OAM/SP et déclenche une nouvelle connexion SSO Federation maintenant avec une seconde instance distante IdP
-
Le second serveur distant IdP authentifie l'utilisateur si nécessaire et émet une réponse SSO.
-
OAM/SP valide la réponse SSO, crée une session OAM
-
OAM redirige l'utilisateur vers IdP
-
IdP crée une réponse SSO et redirige l'utilisateur vers le SP d'origine avec cette réponse
Commande WLST
Pour configurer IdP afin qu'il utilise le SSO de fédération pour authentifier un utilisateur au lieu d'un mécanisme d'authentification locale, exécutez l'une des commandes suivantes :
-
setIdPDefaultScheme()
pour définir le schéma global par défaut en tant que schéma de fédération -
setSPPartnerProfileDefaultScheme()
pour définir le schéma par défaut sur un profil de partenaire de fournisseur de services -
setSPPartnerDefaultScheme()
pour définir le schéma par défaut sur un partenaire de fournisseur de services
Reportez-vous à l'article sur l'authentification dans IdP pour plus d'informations sur la configuration d'OAM pour l'authentification. Dans cet exemple, configurez IdP de manière globale pour utiliser Federation SSO comme mécanisme d'authentification par défaut :
-
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
setIdPDefaultScheme()
:setIdPDefaultScheme("FederationScheme")
. -
Quittez l'environnement WLST :
exit()
.
Avec cette modification, FederationScheme
est utilisé pour authentifier les utilisateurs.
D'autres schémas de fédération peuvent être utilisés pour authentifier l'utilisateur, OAM étant configuré au niveau global (tous les utilisateurs de tous les SP sont authentifiés à l'aide de ce schéma de fédération) ou au niveau du partenaire de fournisseur de services (tous les utilisateurs qui exécutent l'authentification SSO de fédération avec ce SP SPécifique sont authentifiés à l'aide de ce schéma de fédération). N'oubliez pas que vous pouvez créer un schéma de fédération pour un élément IdP spécifique, via la commande OAM WLST createAuthnSchemeAndModule
ou via la section Modifier le partenaire IdP de la console d'administration OAM.
Détermination du deuxième élément IdP à utiliser
Lorsqu'un modèle de fédération est utilisé pour l'authentification dans OAM, OAM/SP doit déterminer la valeur IdP à utiliser pour l'opération SSO de fédération :
-
Si le schéma a été créé à partir d'une entrée de partenaire IdP, il indique à OAM/SP d'exécuter l'authentification unique de fédération avec ce IdP
-
Si le modèle est
FederationScheme
, OAM/SP évalue d'abord s'il est configuré pour utiliser un service de repérage IdP -
S'il est configuré pour un service de repérage IdP, OAM/SP redirige l'utilisateur vers ce service pour sélectionner un élément IdP
-
Sinon, OAM/SP utilise le SSO par défaut IdP
Pour définir un partenaire IdP en tant que partenaire SSO par défaut IdP :
-
Accédez au partenaire IdP dans la console d'administration OAM et cochez la case Partenaire de fournisseur d'identités par défaut.
-
Vous pouvez également utiliser la commande OAM WLST setDefaultSSOIdPPartner() en indiquant le nom du partenaire IdP.
Méthodes d'authentification de fédération par proxy
Comme expliqué dans un article précédent, lorsque IdP construit une assertion, il met en correspondance le modèle OAM local utilisé pour authentifier l'utilisateur avec une méthode d'authentification de fédération.
Dans le cas d'un proxy SSO de fédération maintenant, cela signifie qu'un élément FederationScheme
est mis en correspondance avec une méthode d'authentification de fédération. Par exemple, si le schéma doit être mis en correspondance avec urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
pour SAML 2.0, l'administrateur utilise une commande semblable à la suivante :
-
Pour créer le mappage au niveau d'un profil de partenaire de fournisseur de services :
addSPPartnerProfileAuthnMethod("saml20-sppartner-profile","urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", "FederationScheme")
-
Pour créer le mappage au niveau d'un partenaire SP :
addSPPartnerAuthnMethod("AcmeSP","urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport ", "FederationScheme")
Dans certains cas, il peut être préférable de transférer la méthode d'authentification de fédération reçue de la seconde IdP au lieu de mettre en correspondance localement le modèle de fédération avec une méthode d'authentification de fédération.
Pour configurer IdP afin de transmettre les méthodes d'authentification de fédération dans un proxy SSO de fédération.
A présent, utilisez la commande useProxiedFedAuthnMethod()
:
-
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
useProxiedFedAuthnMethod()
:useProxiedFedAuthnMethod(enabled="true/false",authnSchemeToAdd="SCHEME", authnSchemeToRemove="SCHEME")
. -
Le paramètre activé indique si IdP doit être configuré pour transmettre les méthodes d'authentification de fédération dans un proxy SSO de fédération maintenant
-
Le paramètre
authnSchemeToAdd
indique quel modèle d'authentification OAM est un modèle de fédération : cela permet à IdP de déterminer si la méthode d'authentification de fédération mise en mémoire cache doit être utilisée en fonction du modèle d'authentification de la session de l'utilisateur. -
Le paramètre
authnSchemeToRemove
enlève un modèle d'authentification OAM de la liste des modèles marqués comme modèles de fédération pour lesquels IdP doit utiliser la méthode d'authentification de fédération avec proxy. -
Par exemple :
useProxiedFedAuthnMethod(enabled="true", authnSchemeToAdd="FederationScheme")
- 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.
Federation Proxy in OAM and IdP
F60446-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.