Määritä: Käyttäjäfederointi todennusta varten
Learn how to set up user authentication through federated identity management.
Määritä: Käyttäjäfederointi todennusta varten
Learn how to set up user authentication through federated identity management.
Miten käyttäjäfederointi määritetään todennusta varten?
Tässä artikkelissa kuvataan ohjeet käyttäjäfederoinnin määrittämiseen todennusprotokollaksi. Tämä voidaan tehdä sekä Active Directorylle että LDAP:lle.
Käyttäjäfederointi tarkoittaa, että käyttäjät voivat todentaa itsensä Matrix42 Pro- ja IGA-ratkaisuihin käyttäen samoja tunnuksia (käyttäjätunnus ja salasana) kuin asiakkaan (AD/LDAP) hakemistossa.
Vaiheittaiset ohjeet
1. Todennustehtävä tulee määrittää Service Management -alustalla ennen Secure Access -komponentin määrittämistä. Jos et halua määrittää todennustehtävää ensin, voit tehdä koko määrityksen suoraan Secure Accessissa.
2. Kirjaudu Secure Accessin hallintakonsoliin
Valitse oikea realm, johon määrität tätä federointia
3. Tarkista, että määritys on tallentunut oikein Secure Access -komponenttiin
- Tarkistus voidaan tehdä osoitteessa: https://{TENANT_NAME.com}/auth/ käyttäen tunnusta main.admin (ja vuokralaisen määrityksestä luettua sopivaa salasanaa).
4. Valitsemalla User Federation, pitäisi näkyä lista Authentication tasks -tehtävistä (jos lista on tyhjä, odota minuutti, jotta tieto siirtyy Service Managementista Secure Accessiin; jos lista on edelleen tyhjä.

5. Valitsemalla Edit tietyltä tehtävältä näet LDAPS-yhteyden tiedot. Kannattaa tarkistaa, että kaikki asetukset ovat kunnossa, erityisesti:
- Import Users: ON
- Edit Mode: READ_ONLY
6. Kun yhteys on tallennettu, oikeaan yläkulmaan ilmestyy Action-valikko, josta pääkäyttäjä voi synkronoida kaikki käyttäjät LDAP:sta Secure Accessiin

7. Tarkista, onko AD_GroupMapper kunnossa. Valitse Mappers User Federationin yläpalkista. Oletusmapperien joukossa tulisi näkyä yksi (tai useampi) group-ldap-mapper-tyyppinen mapperi.
- Jos AD_GroupMapperia ei ole luotu automaattisesti, käyttäjä voi luoda oman napsauttamalla sinistä Add mapper -painiketta.

Esimerkki AD-ryhmämapperista


8. Kun määritys on tarkistettu, pääkäyttäjä voi kokeilla Synchronize all users -toimintoa (mainittu eräässä aiemmista näytöistä). Tämän pitäisi tuoda esiin viesti, joka muistuttaa tätä

9. Synkronoidut käyttäjät voi tarkistaa Users-osiosta
10. Määritys pitäisi nyt olla valmis, ja todennusta on mahdollista testata
11. Seuraava vaihe on määrittää käyttäjätasot ja roolit: https://docs.efecte.com/configure-authentication/configure-esa-to-use-esm-roles
Vianmääritys
Secure Access -lokit voidaan ladata Pro/IGA-ratkaisuista Connectors -välilehdeltä, Logs -sivuvalikosta. Lataa sen jälkeen kohdasta esa -lokit, keycloak.log -tiedosto.

1. Jos Secure Accessin lokeissa näkyy SSL-yhteyteen liittyviä ongelmia, kuten esimerkiksi:
Caused by: org.keycloak.models.ModelException: Querying of LDAP failed org.keycloak.storage.ldap.idm.query.internal.LDAPQuery@292d8e81 at org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.fetchQueryResults(LDAPIdentityStore.java:289)
at org.keycloak.storage.ldap.idm.query.internal.LDAPQuery.getResultList(LDAPQuery.java:174)
... 80 more
Caused by: javax.naming.CommunicationException: simple bind failed: 10.0.2.110:636 [Root exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:219)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2897)
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:347)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxFromUrl(LdapCtxFactory.java:225)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:189)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:243)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:154)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:84)
at org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:116)
at org.jboss.as.naming.InitialContext.init(InitialContext.java:101)
at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
at org.jboss.as.naming.InitialContext.<init>(InitialContext.java:91)
at org.jboss.as.naming.InitialContextFactory.getInitialContext(InitialContextFactory.java:43)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:695)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.createLdapContext(LDAPContextManager.java:80)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.getLdapContext(LDAPContextManager.java:100)
at org.keycloak.storage.ldap.idm.query.internal.LDAPQuery.initPagination(LDAPQuery.java:213)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPOperationManager.searchPaginated(LDAPOperationManager.java:293)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.fetchQueryResults(LDAPIdentityStore.java:277)
... 81 more
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alert.createSSLException(Alert.java:131)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:324)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:262)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369)
at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:377)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422)
at sun.security.ssl.TransportContext.dispatch(TransportContext.java:182)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:152)
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1383)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1291)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:435)
at sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:804)
at sun.security.ssl.SSLSocketImpl.access$200(SSLSocketImpl.java:73)
at sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:1166)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at com.sun.jndi.ldap.Connection.writeRequest(Connection.java:448)
at com.sun.jndi.ldap.Connection.writeRequest(Connection.java:421)
at com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:359)
at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:214)
... 102 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:456)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:323)
at sun.security.validator.Validator.validate(Validator.java:271)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:315)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:223)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:129)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638)
... 121 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:451)
... 127 more
|
2. Jos SSL:ää käytetään ESA:n yhdistämiseen Active Directoryyn, ESA:n tulee tunnistaa sertifikaatti, jonka AD esittää. Tämä on manuaalinen vaihe, ja se edellyttää:
- Muodosta SSH-yhteys palvelimeen (jos sinulla ei ole pääsyä palvelimeen, ota yhteyttä Matrix42:een)
- Muodosta SSH-yhteys Secure Access (ESA) -konttiin
- Siirry hakemistoon /opt/esa (varmista, että siellä on truststore.jks-tiedosto)
-
Testiympäristöissä voit suorittaa seuraavan komennon (jos sinulla ei ole sertifikaattitiedostoa):
- echo -n | openssl s_client -connect IP_OF_AD_SERVER:636 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > NAME_OF_THE_FILE_FOR_EXAMPLE_IP_OF_AD_SERVER.crt
- Tuotantoympäristöissä on kuitenkin suositeltavaa hankkia juuri- tai välisertifikaatti asiakkaalta, sillä ne ovat yleensä voimassa pidempään kuin palvelintason sertifikaatit.
- Esimerkki voisi olla:
-
echo -n | openssl s_client -connect 10.0.2.110:636 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > 10.0.2.110.crt
3. Kun sinulla on sertifikaattitiedosto, se tulee tuoda truststore.jks-tiedostoon
- keytool -importcert -file NAME_OF_CERT_FILE.crt -keystore truststore.jks -alias “ALIAS_OF_THE_CERTIFICATE”
- Esimerkiksi: keytool -importcert -file AD_certificate.crt -keystore truststore.jks -alias AD_certificate
4. Käynnistä Secure Access uudelleen ottaaksesi sertifikaatin käyttöön
- Poistu esa-dockerista palvelimelle komennolla: exit
-
Tämän jälkeen ESA-kontti tulee käynnistää uudelleen uusien sertifikaattien käyttöön ottamiseksi suorittamalla nämä komennot palvelimella (korvaa [TENANT] vuokralaisesi nimellä):
docker stop [TENANT]-esa && run-image -e TENANT=[TENANT] esa
Table of Contents