SSO在旧的ASP.NET Web Forms网站中



上下文:

我为之工作的公司希望通过使用"授权代码赠款"的第三方实现单签署功能。我们的产品现在使用ASP.NET Web Forms应用程序中的表单身份验证在.NET Framework 4.0内置。

问题:

是否有一种方法可以在用户必须两次签名(一次通过表单auth,另一个通过身份服务器(来实现单个登录?为了详细说明,是否有一种方法可以在用户成功地通过表单身份验证签名后自动对用户进行身份验证?

这是IDSVR3 WebForms客户端:https://github.com/indistityserver/indistityserver3.samples3.samples/tree/master/master/source/source/clients/webformsclient

从我阅读的内容中,IdentityServer3客户端(以.NET核心之前(应该与IdentityServer4(必须在.NET Core上运行(,并将成功与IdentityServer4进行对话。

因此,我通过通过AJAX将用户登录时将用户凭证发送到Identity Server来解决问题。我制作了一个WebAPI控制器,可以对用户进行身份验证,并为IDSRV auth cookie发送" set-cookie"响应标头。

所以现在我登录了原始应用程序以及身份服务器,无需用户必须两次手动签名。您只需要处理一堆跨原生素的东西即可。在设置应用程序的CORS策略以提出AJAX请求时,必须设置"允许的"。

$.ajax({
    method: 'GET',
    url: 'https://localhost:44304/api/login?username=testing&password=testing',
    crossDomain: true,
    xhrFields: {
        withCredentials: true
    }
})

API/登录端点是在HttpContext.SignInAsync()扩展方法的控制器中定义的。

最新更新