Windows

帶有 AD LDS 的 ADFS 4(對像不存在)

  • February 7, 2018

我用我有限的知識嘗試了一切可能的東西,但我不知道出了什麼問題,所以希望有人能指出正確的方向。

我有一個 ADFS 2016 伺服器,可以很好地與我們的內部 AD 配合使用,但我想使用 AD LDS 對其進行配置,因為我不想在我們的內部 AD 伺服器中為所有客戶添加帳戶。

我已經在託管 ADFS 的同一個盒子上安裝了 AD LDS(稍後將把它移走,但只是想讓它工作)並遵循Microsoft的文章。此設置的一些更改是我僅使用 UPN 和電子郵件屬性,而不是 First、surname 或 givenName。

似乎當我使用文章中的所有 powershell 命令時,我確實獲得了本地聲明提供程序的信任,但是當我嘗試登錄時,它總是失敗,並在事件日誌中顯示錯誤消息,提示對像不存在。

使用者帳戶肯定存在,但我不確定出了什麼問題。該應用程序僅發送使用者名和密碼,因此我定義了與使用者電子郵件相同的 UPN 映射,並嘗試使用郵件屬性。

我還可以提供哪些資訊以供能夠指導我的人使用?謝謝

編輯

我為 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)

所以,最後經過大量的試驗和錯誤,我找到了解決我的問題的方法。這主要適用於使用 AD LDS 身份驗證設置 ADFS 4 並且可能已遵循此Microsoft 文章的情況。

這對某些人來說可能很明顯,但我一直在努力。當您閱讀本文時,並沒有提到您用於綁定到 AD LDS 實例的帳戶需要成為管理員組的成員。現在,當我發現它與權限有關時,我嘗試將該帳戶添加到配置分區中的管理員組,但這顯然不起作用。因此,在您創建的應用程序分區中找到管理員組,並使用 DN 使該帳戶成為其中的成員。

我還想提一提的是微軟的這個ClaimsXray工具,它幫助我解決了其他一些問題。謝謝

引用自:https://serverfault.com/questions/895120