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

时间:2019-05-01 16:10:32

标签: asp.net-mvc-4 identityserver4 wif ws-federation thinktecture-ident-server

我没有太多低估如何使现有的旧版 ASP.NET MVC 4 应用程序(基于声明的身份验证,Windows身份基础,ws联合身份验证,旧的thinktecture身份服务器)使用新的< strong>带有WS-Federation插件的Identity Server 4 。 是否需要按照here所述用OWIN中间件替换WIF的身份验证和会话模块,或者同时使用两者?

这是来自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解决方案。

1 个答案:

答案 0 :(得分:1)

在客户端,您可以使用https://www.baeldung.com/spring-boot-console-app

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

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

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

遵循OWIN stack

另一种方法是立即更改为idsrv4支持的OpenID Connect。

这里approach很好。