Писал я как-то про то, как настроить Мультифактор на vCenter с помощью MultiFactor LDAP Adapter.
MultiFactor Ldap Adapter — LDAP proxy сервер, разработанный и поддерживаемый компанией Мультифактор для двухфакторной аутентификации пользователей в приложениях, использующих LDAP аутентификацию.
Multifactor — двухфакторная аутентификация в vCenter
И вот при обновлении vCenter второй фактор перестал работать с ошибкой:
[400] An error occurred while processing the authentication response from the vCenter Single Sign-On server. Details: Status: urn:oasis:names:tc:SAML:2.0:status:Responder, sub status: null.
При этом проверка второго фактора производится, ошибка происходит на стадии взаимодействия адаптера с LDAPS сервером.
Не помню точную версию vCenter 7, с которой началась проблема. Это примерно 7.0.3.01100. В последующих версиях вплоть до VMware vCenter Server 7.0.3.01800 тоже второй фактор не работает. Скорее всего в очередной версии изменились алгоритмы шифрования или ещё что-то, не вникал.
При отключении MultiFactor LDAP Adapter проблема устраняется. Долго пришлось искать точку отказа, возможно, кому-то сэкономлю время и нервы.
Обновление MultiFactor LDAP Adapter до версии 1.0.114 не помогло.
В логах MultiFactor LDAP Adapter откопали ошибку:
System.IndexOutOfRangeException: Index was outside the bounds of the array. at MultiFactor.Ldap.Adapter.Core.LdapAttribute.ParseAttributes(Byte[] bytes, Int32 currentPosition, Int32 length) in /home/appveyor/projects/multifactor-ldap-adapter-linux/src/Core/LdapAttribute.cs:line 250 at MultiFactor.Ldap.Adapter.Core.LdapPacket.ParsePacket(Byte[] bytes) in /home/appveyor/projects/multifactor-ldap-adapter-linux/src/Core/LdapPacket.cs:line 67 at MultiFactor.Ldap.Adapter.Core.Requests.LdapRequest.FromBytesAsync(Byte[] bytes) in /home/appveyor/projects/multifactor-ldap-adapter-linux/src/Core/Requests/LdapRequest.cs:line 76 at MultiFactor.Ldap.Adapter.Server.LdapProxy.ParseAndProcessRequest(Byte[] data, Int32 length) in /home/appveyor/projects/multifactor-ldap-adapter-linux/src/Server/LdapProxy.cs:line 112 at MultiFactor.Ldap.Adapter.Server.LdapProxy.DataExchange(TcpClient source, Stream sourceStream, TcpClient target, Stream targetStream, Func`3 process) in /home/appveyor/projects/multifactor-ldap-adapter-linux/src/Server/LdapProxy.cs:line 87
Сейчас пытаюсь связаться с кем-то из Мультифактора, но менеджеры не отвечают, учётка моя почему-то заблокирована, это ещё одна проблема.
Решение
Вычислили проблему, оказалось, слишком большой объём данных для групп и пользователей в настройках
- Base distinguished name for users — путь DN к пользователям AD
- Base distinguished name for groups — путь DN к группам AD
vCenter 7 — доменная аутентификация
Сузили поиск более точным (длинным) указанием DN и аутентификация заработала.