Esempio: integrare l'autenticazione basata su certificato con PingFederate
Questo esempio illustra i passi dettagliati per migliorare un ambiente SSO in cui ThingWorx è configurato per Single Sign-On con PingFederate come server di autenticazione centralizzata (CAS) e provider di identificativi (IdP) e Windchill DS come archivio dati con autenticazione basata su certificato. Consente agli utenti di accedere a ThingWorx utilizzando le proprie credenziali o il certificato.
Per la documentazione dettagliata di PingFederate, fare riferimento a
Configuring an X.509 Certificate IdP Adapter.
Parte A: prerequisiti
Passo 1: generare i certificati
Quando si imposta l'autenticazione basata su certificato, si configura PingFederate in modo che il certificato utilizzato per autenticare l'utente possa essere convalidato rispetto al certificato dell'autorità di certificazione (CA) memorizzato in PingFederate. Se non si dispone di una CA e di un certificato utente, è possibile generare un certificato autofirmato e utilizzarlo in PingFederate. Per generare una chiave pubblica e un certificato client, utilizzare i seguenti comandi:
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. Creare un file 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
Passo 2: aggiungere il certificato CA a PingFederate
Per utilizzare il token X.509, PingFederate richiede una porta SSL secondaria. Per impostare una porta SSL secondaria, modificare il file <pf-install>/ping federate/bin/run.properties sostituendo il valore di pf.secondary.https.port con un numero di porta valido. In questo esempio viene configurato come 9032.
Passo 3: aggiungere un certificato CA attendibile
1. Passare a > > .
2. Selezionare il file del certificato dell'autorità CA (file pem).
3. Nella finestra Summary esaminare la configurazione, apportare le modifiche necessarie e fare clic su Save.
Passo 4: memorizzare il certificato utente nel browser
A questo punto, importare il certificato utente (file pfx) nel browser.
Parte B: creare l'adattatore IDP del certificato X.509
Questo adattatore viene utilizzato per autenticare gli utenti in base ai rispettivi certificati.
1. Accedere a PingFederate come amministratore. Passare a > > > . Fare clic su Create New Instance.
2. Immettere valori per Instance Name e Instance ID. Impostare il tipo su X.509 Certificate IdP Adapter 1.3.1. Fare clic su Next.
3. Immettere in Client Auth Port la porta specificata per pf.secondary.https.port (9032). Nel campo client hostname immettere il valore fqdn del sistema PingFederate.
4. Selezionare Match Issuer DN in Client X.509 certificate e fare clic su Show Advanced Fields.
5. Impostare Authentication Context con Policy OID e selezionare l'opzione Include Subject Alternative Name (SAN). Fare clic su Next.
6. Nella scheda Extended Contract utilizzare il pulsante Add per immettere i valori di userPrincipalName e CN e fare clic su Next.
7. Nella scheda Adapter Attributes impostare l'opzione Pseudonym per l'attributo userPrincipalName e fare clic su Next.
8. Nella scheda Adapter Contract Mapping è possibile configurare attributi aggiuntivi da un archivio dati e la scheda Issuance Criteria. Issuance Criteria convalida la presenza dell'utente in LDAP con le informazioni fornite dal certificato.
| È obbligatorio impostare un valore di Issuance Criteria per CBA in ThingWorx. |
a. Fare clic su Configure Adapter Contract.
b. In Adapter Contract Mapping fare clic su ADD Attribute Source.
c. Impostare LDAP per Attribute Source Id e Attribute Source Description. Nell'archivio dati attivo selezionare l'archivio dati WindchillDS e fare clic su Next.
d. In LDAP Directory Search immettere i seguenti parametri:
i. Base DN = cn=Windchill_11.1,o=ptc
ii. Search Scope = Subtree
iii. Aggiungere gli attributi utente seguenti: uid, CN e Subject DN
e. Fare clic su Next.
f. In LDAP FILTER impostare il filtro seguente: uid=${CN}. Fare clic su Next e su Done.
g. In Adapter Contract Fulfillment impostare l'origine userPrincipalName su LDAP con il valore uid. Impostare tutte le altre origini del contratto su Adapter. Fare clic su Next.
h. In Issuance Criteria fare clic su Show Advanced Criteria.
i. Aggiungere l'espressione seguente in Expression: #this.get("ds.LDAP.uid").hasValue(#this.get("CN").getValue()).
ii. Fornire una descrizione per Error Result, ad esempio "Utente non trovato".
iii. Fare clic su AGGIUNGI.
9. Fare clic su Next e su Save.
Parte C: aggiungere un adattatore di certificati alla connessione SP
1. Accedere a PingFederate come amministratore. Passare ad > > . Selezionare il nome della connessione.
2. Fare clic su > .
3. Nella scheda Adapter Instance selezionare il nome dell'adattatore creato nella parte B. Fare clic su Next.
4. Mappare i vari attributi ai valori dell'adattatore o ai valori di testo dinamico.
5. Fare clic su Next e su Save.