Exemple : intégration de l'authentification basée sur des certificats à PingFederate
Cet exemple décrit en détail la procédure d'amélioration d'un environnement SSO où ThingWorx est configuré pour l'authentification unique avec PingFederate comme serveur d'authentification centralisée (CAS) et fournisseur d'identité (IdP), et Windchill DS comme magasin de données avec l'authentification basée sur des certificats (CBA). Cette configuration permet aux utilisateurs de se connecter à ThingWorx avec leurs informations d'identification ou le certificat.
Pour obtenir une documentation détaillée de PingFederate, consultez la rubrique
Configuring an X.509 Certificate IdP Adapter (en anglais).
Partie A : Prérequis
Etape 1 : génération des certificats
Lorsque vous configurez une authentification basée sur un certificat, vous configurez PingFederate afin que le certificat utilisé pour authentifier l'utilisateur puisse être validé par rapport au certificat d'autorité de certification (CA) stocké dans PingFederate. Si vous ne disposez pas d'un CA et d'un certificat utilisateur, vous pouvez générer un certificat auto-signé et l'utiliser dans PingFederate. Pour générer une clé publique et un certificat client, utilisez les commandes suivantes :
1. openssl genrsa -out ptc-sso-ca.key 4096
2. openssl req -x509 -new -nodes -key ptc-sso-ca.key -days 3650 -out ptc-sso-ca.pem
3. openssl genrsa -out ptc-sso-jsmith.key 2048
4. openssl req -new -key ptc-sso-jsmith.key -out ptc-sso-jsmith.csr
5. Créez un fichier v3.ext :
extendedKeyUsage=clientAuth
keyUsage = digitalSignature
6. openssl x509 -req -in ptc-sso-jsmith.csr -CA ptc-sso-ca.pem -CAkey ptc-sso-ca.key -CAcreateserial -out ptc-sso-jsmith.pem -days 1024 -sha256 -extfile <path to v3.ext file>
7. openssl pkcs12 -export -out ptc-sso-jsmith.pfx -inkey ptc-sso-jsmith.key -in ptc-sso-jsmith.pem
Etape 2 : ajout du certificat CA à PingFederate
Pour utiliser le jeton X.509, PingFederate a besoin d'un port SSL secondaire. Pour définir un port SSL secondaire, modifiez le fichier <pf-install>/ping federate/bin/run.properties en remplaçant la valeur de pf.secondary.https.port par un numéro de port valide. (Dans cet exemple, nous allons utiliser le numéro 9032).
Etape 3 : ajout d'un certificat CA approuvé
1. Accédez à > > .
2. Sélectionnez votre fichier de certificat d'autorité CA (fichier pem).
3. Dans la fenêtre Résumé, vérifiez votre configuration, modifiez-la si nécessaire, puis cliquez sur Enregistrer.
Etape 4 : stockage du certificat utilisateur dans votre navigateur
Maintenant, importez le certificat utilisateur (fichier pfx) dans votre navigateur.
Partie B : création de l'adaptateur IDP pour certificat X509
Cet adaptateur sera utilisé pour authentifier les utilisateurs en fonction de leurs certificats.
1. Connectez-vous à PingFederate en tant qu'administrateur. Accédez à > > > . Cliquez sur Create New Instance.
2. Entrez le nom d'instance et l'ID d'instance dans les champs Instance Name et Instance ID. Définissez le type sur X.509 Certificate IdP Adapter 1.3.1. Cliquez sur Next.
3. Spécifiez le Client Auth Port spécifié pour le pf.secondary.https.port (9032). Pour client hostname, entrez la chaîne fqdn du système PingFederate.
4. Vérifiez le Match Issuer DN in Client X.509 certificate, puis cliquez sur Show Advanced Fields.
5. Définissez l'Authentication Context avec Policy OID et sélectionnez l'option Include Subject Alternative Name (SAN). Cliquez sur Next.
6. Dans l'onglet Extended Contract, cliquez sur le bouton Add pour entrer le userPrincipalName et le CN et cliquez sur Next.
7. Dans l'onglet Adapter Attributes, définissez l'option Pseudonym pour l'attribut userPrincipalName, puis cliquez sur Next.
8. Dans l'onglet Adapter Contract Mapping, vous pouvez configurer des attributs supplémentaires à partir d'un magasin de données ainsi que des critères d'émission. Les critères d'émission valident la présence de l'utilisateur dans LDAP avec les informations fournies à partir du certificat.
| Il est obligatoire de définir des critères d'émission de CBA dans ThingWorx. |
a. Cliquez sur Configure Adapter Contract.
b. Dans Adapter Contract Mapping, cliquez sur ADD Attribute Source.
c. Définissez LDAP dans les champs Attribute Source Id et Attribute Source Description. Dans le magasin de données actif, sélectionnez votre magasin de données WindchillDS et cliquez sur Next.
d. Dans LDAP Directory Search, spécifiez les paramètres suivants :
i. Base DN = cn=Windchill_11.1,o=ptc
ii. Search Scope = Subtree
iii. Ajoutez les attributs utilisateur suivants : uid, CN et Subject DN
e. Cliquez sur Next.
f. Dans LDAP FILTER, définissez le filtre suivant : uid=${CN}. Cliquez sur Next, puis Done.
g. Dans Adapter Contract Fulfillment, définissez la source userPrincipalName sur LDAP avec la valeur uid. Définissez toutes les autres sources de contrat sur Adapter. Cliquez sur Next.
h. Dans Issuance Criteria, cliquez sur Show Advanced Criteria.
i. Sous Expression, ajoutez : #this.get("ds.LDAP.uid").hasValue(#this.get("CN").getValue())
ii. Fournissez une chaîne Error Result, par exemple "User was not found".
iii. Cliquez sur ADD.
9. Cliquez sur Next, puis sur Save.
Partie C : ajout d'un adaptateur de certificat à la connexion du SP
1. Connectez-vous à PingFederate en tant qu'administrateur. Accédez à > > . Sélectionnez votre nom de votre connexion.
2. Cliquez sur > .
3. Dans l'onglet Adapter Instance, sélectionnez le nom de l'adaptateur que vous avez créé à la partie B. Cliquez sur Next.
4. Mappez les différents attributs aux valeurs d'adaptateur ou aux valeurs de texte dynamique.
5. Cliquez sur Next, puis sur Save.