配置 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。
我不太了解如何使现有的旧 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。