帶有 AD LDS 的 ADFS 4(對像不存在)
我用我有限的知識嘗試了一切可能的東西,但我不知道出了什麼問題,所以希望有人能指出正確的方向。
我有一個 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工具,它幫助我解決了其他一些問題。謝謝