Функція PowerProtect: Не вдається виконати автентифікацію за допомогою Active Directory після оновлення до версії 19.19

Summary: Користувачі не можуть увійти в диспетчер даних PowerProtect за допомогою облікових даних Active Directory.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Користувачі не можуть автентифікуватися за допомогою своїх облікових даних Microsoft Active Directory (AD) після оновлення PowerProtect до версії 19.19.0-15.

Відображається повідомлення про помилку, подібне до наведеного нижче:

"Failed to authenticate the user with identity provider. Please check for any network connectivity issues with the external identity provider if configured. Also check for expired certificates or credential issues with the configured provider."


Повідомлення про помилку, подібне до наведеного нижче, присутнє у файлі keycloak.log на пристрої PowerProtect:

2025-04-02 01:11:20,715 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (executor-thread-23) Uncaught server error: org.keycloak.models.ModelException: LDAP Query failed
	at org.keycloak.storage.ldap.idm.query.internal.LDAPQuery.getResultList(LDAPQuery.java:178)
	at org.keycloak.storage.ldap.idm.query.internal.LDAPQuery.getFirstResult(LDAPQuery.java:185)
	at org.keycloak.storage.ldap.LDAPStorageProvider.loadLDAPUserByUsername(LDAPStorageProvider.java:1052)
	at org.keycloak.storage.ldap.LDAPStorageProvider.getUserByUsername(LDAPStorageProvider.java:649)
	at org.keycloak.storage.ldap.LDAPStorageProvider.getUserById(LDAPStorageProvider.java:373)
	at org.keycloak.storage.UserStorageManager.getUserById(UserStorageManager.java:395)
	at org.keycloak.models.cache.infinispan.UserCacheSession.getUserById(UserCacheSession.java:222)
	at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.wrap(PersistentUserSessionProvider.java:642)
	at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSession(PersistentUserSessionProvider.java:287)
	at org.keycloak.models.sessions.infinispan.PersistentUserSessionProvider.getUserSession(PersistentUserSessionProvider.java:282)
	at org.keycloak.services.managers.AuthenticationManager.verifyIdentityToken(AuthenticationManager.java:1493)
	at org.keycloak.services.managers.AuthenticationManager.authenticateIdentityCookie(AuthenticationManager.java:862)
	at org.keycloak.services.managers.AuthenticationSessionManager.getUserSessionFromAuthenticationCookie(AuthenticationSessionManager.java:259)
	at org.keycloak.protocol.AuthorizationEndpointBase.createAuthenticationSession(AuthorizationEndpointBase.java:184)
	at org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.process(AuthorizationEndpoint.java:193)
	at org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.buildGet(AuthorizationEndpoint.java:115)
	at org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint$quarkusrestinvoker$buildGet_4b690b27439f19dd29733dc5fd4004f24de0adb6.invoke(Unknown Source)
	at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
	at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)
	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:635)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.keycloak.models.ModelException: Querying of LDAP failed org.keycloak.storage.ldap.idm.query.internal.LDAPQuery@29377815
	at org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.fetchQueryResults(LDAPIdentityStore.java:294)
	at org.keycloak.storage.ldap.idm.query.internal.LDAPQuery.getResultList(LDAPQuery.java:174)
	... 27 more
Caused by: javax.naming.CommunicationException: yourcompany.com: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 java.naming/com.sun.jndi.ldap.Connection.<init>(Connection.java:251)
	at java.naming/com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:141)
	at java.naming/com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1620)
	at java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2848)
	at java.naming/com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:349)
	at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxFromUrl(LdapCtxFactory.java:229)
	at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:189)
	at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:247)
	at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:154)
	at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:84)
	at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:520)
	at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
	at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
	at java.naming/javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
	at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.createLdapContext(LDAPContextManager.java:74)
	at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.getLdapContext(LDAPContextManager.java:93)
	at org.keycloak.storage.ldap.idm.store.ldap.LDAPOperationManager.execute(LDAPOperationManager.java:709)
	at org.keycloak.storage.ldap.idm.store.ldap.LDAPOperationManager.execute(LDAPOperationManager.java:704)
	at org.keycloak.storage.ldap.idm.store.ldap.LDAPOperationManager.search(LDAPOperationManager.java:255)
	at org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.fetchQueryResults(LDAPIdentityStore.java:278)
	... 28 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 java.base/sun.security.ssl.Alert.createSSLException(Alert.java:130)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:316)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:647)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:467)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:363)
	at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:393)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:476)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:447)
	at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:201)
	at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
	at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1506)
	at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1421)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)
	at java.naming/com.sun.jndi.ldap.Connection.initialSSLHandshake(Connection.java:370)
	at java.naming/com.sun.jndi.ldap.Connection.createSocket(Connection.java:288)
	at java.naming/com.sun.jndi.ldap.Connection.<init>(Connection.java:230)
	... 47 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 java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:388)
	at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:271)
	at java.base/sun.security.validator.Validator.validate(Validator.java:256)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:230)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:631)
	... 61 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:148)
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:129)
	at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
	at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:383)
	... 66 more

Cause

Така поведінка спостерігається, коли налаштовано високу доступність для контролерів домену. У PowerProtect Data Manager 19.19 відбулися значні архітектурні зміни щодо роботи автентифікації та керування користувачами. В рамках оновлення існуюча конфігурація переноситься на нову архітектуру. Після міграції, за відсутності сертифіката Root CA, який використовується для контролерів домену з ланцюжка довіри PowerProtect Data Manager,

розривається валідація під час зміни з'єднання Active Directory для автоматичного підтягування кореневого сертифіката ЦС до ланцюга довіри.

Resolution

У релізах PowerProtect Data Manager після 19.19.0-15 зміни в архітектурі впливають на валідацію ланцюжка сертифікатів. Виконайте такі дії, щоб додати кореневий сертифікат ЦС до ланцюжка довіри:

  1. Переконайтеся, що файл сертифіката Root CA, який використовується на контролерах домену, доступний.
  2. Видаліть наявне підключення до Active Directory. 
  3. Виберіть кнопку Додати на сторінці Налаштування каталогу.
  4. Виберіть AD, установіть прапорець Безпечне з'єднання та заповніть дані Active Directory.
  5. У розділі Сертифікат виберіть опцію Завантажити сертифікат.
  6. Вибравши опцію «Завантажити сертифікат », ви зможете завантажити або вставити кореневий файл або сертифікат хоста.
Для завантаження хоста або кореневого сертифіката:
  • Виберіть опцію «Завантажити файл сертифіката».
  • Виберіть тип сертифікації: Host, ICA або Root. Якщо потрібно завантажити кореневий сертифікат ЦС, виберіть опцію Root.
  • Натисніть «Завантажити файл сертифіката» та виберіть сертифікат у вашій системі/сервері.
ПРИМІТКА. Підтримувані типи файлів: .pem і .crt.
 
Для вставки кореневого сертифіката:
  • Виберіть опцію «Вставити сертифікат».
  • Виберіть тип сертифікації: Host, ICA або Root. Якщо додається кореневий сертифікат ЦС, виберіть опцію Root.
  • Вставте сертифікат у порожнє поле.
  1. Перегляньте інформацію в розділі «Показати додаткові налаштування» та виберіть кнопку «Застосувати». 
  2. Перейдіть до меню «Адміністрування », виберіть «Сертифікати », а потім вкладку «Зовнішні сервери ». Переконайтеся, що ви можете знайти сертифікат кореневого центру сертифікації зі станом «Схвалено» для номера порту, що використовується (636 – порт за замовчуванням).
  3. Перейдіть на сторінку «Групи користувачів» у розділі «Контроль доступу», щоб додати користувачів і групи з Active Directory. 
  4. Перевірте автентифікацію за допомогою облікових даних Active Directory. Користувачі повинні використовувати userPrincipalName(UPN) під час додавання імені користувача на сторінці входу. 

Посібник із конфігурації безпеки диспетчера даних PowerProtect містить більше можливостей для з'єднань Lightweight Directory Access Protocol (LDAP) або AD.

Additional Information

Починаючи з PowerProtect Data Manager 19.19, в імені користувача рекомендується використовувати userPrincipalName (UPN), який встановлено в Active Directory. Доменне ім'я, що використовується в UPN, може відрізнятися від імені, що використовується під час додавання домену до диспетчера даних PowerProtect. У більш ранніх версіях користувачам доводилося додавати доменне ім'я, яке було додано в PowerProtect Data Manager.

Спосіб вирішення
: наявне підключення Microsoft Active Directory можна видалити та додати як LDAP без використання протоколу SSL (SSL). Це дозволяє користувачам автентифікуватися без використання ланцюжка сертифікатів.

Affected Products

PowerProtect Data Manager, PowerProtect Data Manager Essentials
Article Properties
Article Number: 000308292
Article Type: Solution
Last Modified: 05 Nov 2025
Version:  2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.