Назад | Перейти на главную страницу

ADFS 4 с AD LDS (объект не существует)

Я перепробовал все возможное с моими ограниченными знаниями, но я не могу понять, что не так, поэтому надеюсь, что кто-то может просто указать правильное направление.

У меня есть сервер ADFS 2016, который отлично работает с нашим внутренним AD, но я хотел настроить его с помощью AD LDS, поскольку я не хочу добавлять учетные записи для всех наших клиентов на нашем внутреннем сервере AD.

Я установил AD LDS на том же компьютере, где размещается ADFS (позже уберу его, но просто хочу, чтобы он работал), и следил за статьей, Microsoft. Некоторые изменения в этой настройке заключаются в том, что я использую только атрибуты UPN и Email, а не First, surname или givenName.

Кажется, когда я использую все команды PowerShell из статьи, я получаю доверие локального поставщика утверждений, но когда я пытаюсь войти в систему, он всегда терпит неудачу с сообщениями об ошибках в журнале событий, предполагающими, что объект не существует.

Учетная запись пользователя определенно существует, но я не уверен, что не так. Приложение отправляет только имя пользователя и пароль, поэтому я определил сопоставление с UPN, которое совпадает с электронной почтой пользователя, а также попытался использовать атрибут mail.

Какую дополнительную информацию я могу предоставить, чтобы кто-то мог направлять меня? Спасибо

РЕДАКТИРОВАТЬ

Я включил отладку трассировки для adfs и вижу следующие ошибки:

 LDAPAttributeStoreReader: Failed to retrieve attributes with filter (&(objectClass=inetOrgPerson)(mail=user@domain.com)) with error:
System.DirectoryServices.Protocols.DirectoryOperationException: The object does not exist.

Server stack trace: 
   at System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32 messageId, LdapOperation operation, ResultAll resultType, TimeSpan requestTimeOut, Boolean exceptionOnTimeOut)
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)

Exception rethrown at [0]: 
   at System.DirectoryServices.Protocols.LdapConnection.EndSendRequest(IAsyncResult asyncResult)
   at Microsoft.IdentityServer.ClaimsPolicy.Engine.AttributeStore.Ldap.LdapAttributeStoreReader.OnAttributeSearchComplete(IAsyncResult attributeSearchAsyncResult)

Кроме того, некоторые другие ошибки, которые я вижу

    Failed to complete attribute store query with error:
The object does not exist.
Error code: NoSuchObject
Server response message: 0000208D: NameErr: DSID-0315295A, problem 2001 (NO_OBJECT), data 0, best match of:
    'DC=domain,DC=com'


   at Microsoft.IdentityModel.Threading.AsyncResult.End(IAsyncResult result)
   at Microsoft.IdentityServer.ClaimsPolicy.Engine.AttributeStore.Ldap.LdapAttributeStoreReader.EndGetAttributes(IAsyncResult result)
   at Microsoft.IdentityServer.ClaimsPolicy.Engine.AttributeStore.Ldap.LdapAttributeStore.OnExecuteQueryComplete(IAsyncResult ar)

И третий

    LdapAccountStore: Failed to lookup the directory object for user user@domain.com on server.
Exception: The object does not exist.
Error code: NoSuchObject
Server response message: 0000208D: NameErr: DSID-0315295A, problem 2001 (NO_OBJECT), data 0, best match of:
    'DC=domain,DC=com'


StackTrace:    at Microsoft.IdentityModel.Threading.AsyncResult.End(IAsyncResult result)
   at Microsoft.IdentityModel.Threading.TypedAsyncResult`1.End(IAsyncResult result)
   at Microsoft.IdentityServer.Service.LocalAccountStores.LdapStore.LdapAccountStore.GetUserDn(String userName)
System.DirectoryServices.Protocols.DirectoryOperationException: The object does not exist.
ResultCode: NoSuchObject
ErrorMessage: 0000208D: NameErr: DSID-0315295A, problem 2001 (NO_OBJECT), data 0, best match of:
    'DC=domain,DC=com'

MatchedDN: DC=domain,DC=com
StackTrace: 
Server stack trace: 
   at System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32 messageId, LdapOperation operation, ResultAll resultType, TimeSpan requestTimeOut, Boolean exceptionOnTimeOut)
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)

Exception rethrown at [0]: 
   at System.DirectoryServices.Protocols.LdapConnection.EndSendRequest(IAsyncResult asyncResult)
   at Microsoft.IdentityServer.ClaimsPolicy.Engine.AttributeStore.Ldap.LdapAttributeStoreReader.OnAttributeSearchComplete(IAsyncResult attributeSearchAsyncResult)

Итак, наконец, после многих проб и ошибок я нашел решение своей проблемы. Это применимо в основном, если вы настраиваете ADFS 4 с аутентификацией AD LDS и, вероятно, следовали этому Статья Microsoft.

Некоторым это могло показаться очевидным, но я боролся с этим. Когда вы читаете эту статью, в ней не упоминается, что учетная запись, которую вы используете для привязки к экземпляру AD LDS, должна быть членом группы администраторов. Теперь, когда я понял, что это как-то связано с разрешениями, я попытался добавить учетную запись в группу администраторов в разделе конфигурации, и это явно не сработало. Итак, найдите группу администраторов в созданном вами разделе приложения и сделайте учетную запись ее членом, используя DN.

Еще одна вещь, которую я хочу упомянуть, это Претензии инструмент от Microsoft, который помог мне решить некоторые другие проблемы. Спасибо