AD FS 3.0 с Thinktecture Identityserver 2 в качестве поставщика утверждений: события 197 и 364

У нас возникла проблема при переходе с AD FS 2.0 на AD FS 3.0.

У нас есть приложение ASP.NET MVC, которое использует федеративную аутентификацию через AD FS. В нашей тестовой среде мы настроили Thinktecture Identityserver 2 в качестве поставщика утверждений в AD FS. Запросы приложений authenticationType="urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI", Для справки, вот весь раздел идентификации нашего файла web.config:

  <system.identityModel>
    <identityConfiguration>
      <claimsAuthenticationManager type="ProjectName.Authorization.AuthenticationManager, ProjectName" />
      <claimsAuthorizationManager type="ProjectName.Authorization.AuthorizationManager,ProjectName" />
      <audienceUris>
        <add value="https://applicationdomain/" />
      </audienceUris>
      <securityTokenHandlers>
        <securityTokenHandlerConfiguration saveBootstrapContext="true">
          <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <trustedIssuers>
              <add thumbprint="(thumbprint of ADFS certificate)" name="ADFS Test" />
            </trustedIssuers>
          </issuerNameRegistry>
        </securityTokenHandlerConfiguration>
      </securityTokenHandlers>
    </identityConfiguration>
  </system.identityModel>
  <system.identityModel.services>
    <federationConfiguration>
      <wsFederation freshness="120" passiveRedirectEnabled="true" issuer="https://adfsdomain/adfs/ls" realm="https://applicationdomain/" requireHttps="true" authenticationType="urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI" />
      <serviceCertificate>
        <certificateReference findValue="(thumbprint of application's certificate)" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
      </serviceCertificate>
      <cookieHandler requireSsl="true" />
    </federationConfiguration>
  </system.identityModel.services>

В настоящее время мы работаем на несколько устаревших серверах с Windows Server 2008 R2 и AD FS 2.0, но это работает. Недавно мы создали новую среду серверов под управлением Windows Server 2012 R2 и AD FS 3.0. Мы установили наше приложение MVC на новом сервере и настроили AD FS 3.0 на другом, настроенном как старая AD FS 2.0 (насколько мы можем судить) с приложением MVC в качестве проверяющей стороны и Thinktecture Identityserver 2 в качестве претензий. поставщик. Одно из отличий состоит в том, что теперь мы используем прокси-сервер AD FS на отдельном сервере, поскольку AD FS 3.0 требует этого (тогда как AD FS 2.0 этого не делал). На самом деле у нас есть два сервера AD FS, а затем два прокси-сервера за балансировщиком нагрузки. Thinktecture Identityserver 2 по-прежнему работает на старом сервере (в Windows Server 2008 R2).

Вот проблема: я просматриваю адрес приложения. Меня перенаправляют на AD FS, как и ожидалось, что быстро перенаправляет меня на Thinktecture Identityserver 2. Пока все хорошо. Я вхожу с именем пользователя ("Андерс") и паролем и возвращаюсь обратно в AD FS. Здесь я получаю общую страницу с сообщением об ошибке "Произошла ошибка". В журнале событий на сервере AD FS (балансировщик нагрузки, по-видимому, всегда направляет меня на один и тот же узел, который оказывается основным), я обнаружил две ошибки и одно предупреждение. Первая ошибка:

Event 197, AD FS

The Federation Service could not satisfy a token request because the 
accompanying credentials do not meet the authentication type requirement of 
'urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI' for the relying party 
'https://applicationdomain.no'.
Authentication type:
Desired authentication type(s): urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI
Relying party: https://applicationdomain.no 

This request failed.

Тогда предупреждение:

Event 1000, AD FS

An error occurred during processing of a token request. The data in this event 
may have the identity of the caller (application) that made this request. The 
data includes an Activity ID that you can cross-reference to error or warning 
events to help diagnose the problem that caused this error.  

Additional Data 

Caller:  Anders

OnBehalfOf user:

ActAs user:

Target Relying Party:  https://applicationdomain.no

Тогда вторая ошибка:

Event 364, AD FS

Encountered error during federation passive request. 

Additional Data 

Protocol Name: 
wsfed 

Relying Party: 


Exception details: 
Microsoft.IdentityServer.Service.Policy.PolicyServer.Engine.InvalidAuthenticationTypePolicyException: Exception of type 'Microsoft.IdentityServer.Service.Policy.PolicyServer.Engine.InvalidAuthenticationTypePolicyException' was thrown.
   at Microsoft.IdentityModel.Threading.AsyncResult.End(IAsyncResult result)
   at Microsoft.IdentityModel.Threading.TypedAsyncResult`1.End(IAsyncResult result)
   at Microsoft.IdentityModel.SecurityTokenService.SecurityTokenService.EndIssue(IAsyncResult result)
   at Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, IList`1& identityClaimSet)
   at Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.SubmitRequest(MSISRequestSecurityToken request, IList`1& identityClaimCollection)
   at Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.RequestBearerToken(MSISRequestSecurityToken signInRequest, Uri& replyTo, IList`1& identityClaimCollection)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.RequestBearerToken(MSISSignInRequestMessage signInRequest, SecurityTokenElement onBehalfOf, SecurityToken primaryAuthToken, SecurityToken deviceSecurityToken, String desiredTokenType, WrappedHttpListenerContext httpContext, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired, MSISSession& session)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.BuildSignInResponseCoreWithSerializedToken(MSISSignInRequestMessage wsFederationPassiveRequest, WrappedHttpListenerContext context, SecurityTokenElement signOnTokenElement, Boolean isKmsiRequested, Boolean isApplicationProxyTokenRequired)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.SendSignInResponseForSecurityToken(GenericProtocolRequest originalRequest, SecurityTokenElement requestedTokenElement, ProtocolContext context)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)

Я прочитал о поддерживаемых типах проверки подлинности SAML в AD FS на этой странице: https://msdn.microsoft.com/en-us/library/hh599318.aspx. SmartcardPKI здесь не указан. (Обратите внимание, что документация для AD FS 2.0.)

На серверах AD FS (как старых, так и новых) я попытался перечислить поддерживаемые типы аутентификации с помощью следующей команды PowerShell:

get-adfsproperties | select-object -expandProperty AuthenticationContextOrder | select-object -Property AbsoluteUri

И на старом сервере, и на новом выводится:

urn:oasis:names:tc:SAML:2.0:ac:classes:Password urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient urn:oasis:names:tc:SAML:2.0:ac:classes:X509 urn:federation:authentication:windows urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos

Никакой SmartcardPKI здесь тоже нет. Тем не менее он работает в старой среде.

Я также попытался использовать PasswordProtectedTransport вместо SmartcardPKI (путем редактирования файла web.config приложения MVC). Результат был точно таким же, за исключением того, что первое сообщение об ошибке теперь говорит:

The Federation Service could not satisfy a token request because the 
accompanying credentials do not meet the authentication type requirement of  
'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport' for the  
relying party 'https://applicationdomain.no'...

Любые указатели относительно того, что я должен попробовать дальше, будут очень приветствоваться. Может быть, есть различия между AD FS 2.0 и 3.0, которые требуют от меня изменения конфигурации Thinktecture IdentityServer 2?

0 ответов

Другие вопросы по тегам