Ошибка AD FS 2.1, событие 323 / 364
Я работал над настройкой нового сервера (Windows Server 2012) для целей разработки. Цель - проверить вход в систему через AD FS для веб-приложения. Машина является контроллером домена, имеет собственные службы сертификации и AD FS.
В веб-приложении используется Owin, и я следовал этому руководству: https://developers.de/blogs/armin_kalajdzija/archive/2016/10/06/how-to-implement-web-sign-on-with-adfs-in-asp-net-mvc-using-owin.aspx
Меня перенаправляют на AD FS, когда я захожу на сайт, который я настроил, но после входа в систему я получаю сообщение об ошибке. В окне просмотра событий я получаю:
Первое событие 323
The Federation Service could not authorize token issuance for the caller '*domain\user*
' on behalf of the subject '*domain\user*
' to the relying party 'https://*domain*:44330/'. Please see event 501 with the same instance id for caller identity. Please see event 502 with the same instance id for OnBehalfOf identity, if any.
Additional Data
Instance id: 28b6e92b-453e-4488-93d1-3671268ff24c
Exception details:
Microsoft.IdentityServer.Service.IssuancePipeline.OnBehalfOfAuthorizationException: MSIS5009: The impersonation authorization failed for caller identity System.Security.Claims.ClaimsIdentity and delegate System.Security.Claims.ClaimsIdentity for relying party trust https://*domain*:44330/.
at System.IdentityModel.AsyncResult.End(IAsyncResult result)
at System.ServiceModel.Security.WSTrustServiceContract.ProcessCoreAsyncResult.End(IAsyncResult ar)
at System.ServiceModel.Security.WSTrustServiceContract.EndProcessCore(IAsyncResult ar, String requestAction, String responseAction, String trustNamespace)
User Action
Use the Windows PowerShell Get-ADFSClaimsProviderTrust or Get-ADFSRelyingPartyTrust cmdlet to ensure the caller is authorized on behalf of the subject to the relying party.
Затем около 501 и 502 с информацией о пользователе / претензии. А потом 364
Encountered error during federation passive request.
Additional Data
Exception details:
Microsoft.IdentityServer.Web.RequestFailedException: MSIS7012: An error occurred while processing the request. Contact your administrator for details. ---> System.ServiceModel.FaultException: MSIS3126: Access denied.
at Microsoft.IdentityServer.Protocols.WSTrust.WSTrustClient.Issue(RequestSecurityToken rst, WCFResponseData responseData)
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.SubmitRequest(MSISRequestSecurityToken request)
--- End of inner exception stack trace ---
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.SubmitRequest(MSISRequestSecurityToken request)
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.RequestBearerToken(MSISSignInRequestMessage signInRequest, SecurityTokenElement onBehalfOf, SecurityToken primaryAuthToken, String desiredTokenType, Uri& replyTo)
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.RequestBearerToken(MSISSignInRequestMessage signInRequest, SecurityTokenElement onBehalfOf, SecurityToken primaryAuthToken, String desiredTokenType, MSISSession& session)
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.BuildSignInResponseCoreWithSerializedToken(String signOnToken, WSFederationMessage incomingMessage)
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.BuildSignInResponseCoreWithSecurityToken(SecurityToken securityToken, WSFederationMessage incomingMessage)
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.BuildSignInResponseForProtocolRequest(FederationPassiveContext federationPassiveContext, SecurityToken securityToken)
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.BuildSignInResponse(SecurityToken securityToken)
>System.ServiceModel.FaultException: MSIS3126: Access denied.
at Microsoft.IdentityServer.Protocols.WSTrust.WSTrustClient.Issue(RequestSecurityToken rst, WCFResponseData responseData)
at Microsoft.IdentityServer.Web.FederationPassiveAuthentication.SubmitRequest(MSISRequestSecurityToken request)
Теперь кое-что я попробовал:
Доверяющая сторона имеет "разрешить доступ всем пользователям" в качестве единственного правила авторизации выдачи. Я пробовал разные правила в соответствии с Правилами трансформации выдачи. В основном это разные атрибуты, которые я видел в событиях 501 и 502 как "Отправка атрибутов LDAP как утверждений". (Также возиться с некоторыми преобразованиями и проходить через правила)
Я попытался изменить алгоритм безопасного хэширования на проверяющей стороне между SHA-1 и SHA-256.
Я попытался изменить конечную точку WS-Federation на https: //domain/ adfs / ls /. (и пробовал разные конечные точки и идентификаторы с или без / в конце)
Я попытался изменить правила в Доверие провайдера утверждений (AD), а затем отменил их обратно, поскольку он не работал.
Я попытался установить для SigningCertificateRevocationCheck значение "none" через PowerShell.
Я удалил и восстановил доверие доверяющей стороны.
Ошибка, которую я получаю, всегда одна и та же. У кого-нибудь есть идея, что еще попробовать?