配置 ASP.NET MVC 4 网络应用程序以使用 Identity Server 4

Configure ASP.NET MVC 4 web app to use Identity Server 4

我不太了解如何使现有的旧 ASP.NET MVC 4 应用程序(基于声明的身份验证,windows 身份基础,ws- federation,旧的 thinktecture 身份服务器)使用新的 Identity Server 4 with WS-Federation plugin。 是否需要用 OWIN 中间件替换 WIF 的身份验证和会话模块,如所述 here 或同时使用两者?

这是来自 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 客户端的现代 SSO 解决方案,甚至是建议。

在客户端,您可以使用OWIN stack

请注意,这是 .NET Core,但原理是相同的。

如果您愿意,您仍然可以使用 WIF。您只需要更改 IDP URL 和 wtrealm 参数。

在服务器端,您需要 Rock Solid Knowledge WS-Fed 插件。

关注这个approach

另一种方法是更改​​为开箱即用的 idsrv4 支持的 OpenID Connect。

这里有一个很好的walk-through