Настройте веб-приложение ASP.NET MVC 4 для использования Identity Server 4 - PullRequest
0 голосов
/ 01 мая 2019

Я не очень понимаю, как заставить существующее старое ASP.NET MVC 4 приложение (аутентификация на основе утверждений, основание идентификации Windows, WS-федерация, старый сервер идентификации Thinktecture) использовать новое Identity Server 4 с подключаемым модулем WS-Federation . Требуется ли заменить модули аутентификации и сеанса WIF промежуточным программным обеспечением OWIN, как указано здесь , или использовать оба?

Вот конфиги с web.config:

        <httpModules>
      <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </httpModules>
...
<microsoft.identityModel>
    <service>
      <audienceUris>
        <add value="https://localhost/" />
      </audienceUris>
      <federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="https://localhost/LoginEndpoint/issue/wsfed" realm="https://localhost/" requireHttps="false" />
        <cookieHandler requireSsl="true" hideFromScript="true" />
      </federatedAuthentication>
      <applicationService>
        <claimTypeRequired>
          <claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="true" />
          <claimType type="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="true" />
        </claimTypeRequired>
      </applicationService>
      <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <trustedIssuers>
          <add thumbprint="XXXXXXXXXXXX" name="https://localhost/LoginEndpoint/" />
        </trustedIssuers>
      </issuerNameRegistry>
      <certificateValidation certificateValidationMode="None" />
      <serviceCertificate>
        <!--Needed for cookie encyption in web-farm environment. -->
        <certificateReference x509FindType="FindByThumbprint" findValue="XXXXXXXXXXXXXXXXX" />
      </serviceCertificate>
    </service>
  </microsoft.identityModel>

Любая помощь будет оценена! Даже предложения, если есть более подходящие платформы или подходы для современных решений единого входа, которые можно использовать со старыми клиентами ASP.NET MVC 4.

1 Ответ

1 голос
/ 01 мая 2019

На стороне клиента вы можете использовать OWIN стек .

Обратите внимание, что это .NET Core, но принципы те же.

Вы все еще можете использоватьWIF, если хотите.Вам просто нужно изменить URL IDP и параметры wtrealm.

На стороне сервера вам необходим плагин Rock Solid Knowledge WS-Fed.

Следуйте этому подходу .

Другой способ - перейти на OpenID Connect, который idsrv4 поддерживает «из коробки».

Здесь есть хороший обзор .

...