如何使用表单身份验证(成员身份)转换多个ASP.NET web表单应用程序以指向新的.NET核心标识网站进行登录



首先,我想道歉,因为这是我的第一篇帖子,我甚至不知道如何正确表达我的问题。

以下是发生的事情:

我有几个在VB.NET中构建的早期ASP.NET web表单应用程序(.NET Framework 4.6.1(,它们当前使用ASP.NET成员身份提供程序和表单身份验证。基本上,应用程序A、B和C重定向到应用程序D上的登录屏幕,用户在那里登录,然后重定向回来。我相信这可以通过表单身份验证实现,其中所有应用程序在Web.config中共享相同的machineKey。

我使用ASP.NET Identity创建了一个新的ASP.NET Core MVC应用程序(.NET Core 3.1(来取代应用程序D,该应用程序将来也将使用IdentityServer4来支持第三方客户端的单点登录。这个新的SSO应用程序有新的用户屏幕来管理用户/角色等,并且作为一个独立的站点运行得很好。

如何让应用程序A、B和C正确重定向到SSO,以便用户可以获得身份验证并重定向回?这里的正确方法是什么?需要采取哪些步骤?

我花了几个星期的时间在网上学习教程,学习IdentityServer4,创建新的现代MVC网站,使用OWIN交换令牌,等等,一切都很好。我还看到了将ASP.NET成员身份转换为OWIN或Identity的教程,但这真的是我需要的吗?我有一个新网站已经在使用Identity了,所以我不应该这样做,对吧?

想法?

我设法弄明白了。使用一个新的ASP.NET Web应用程序(.NET Framework(-Visual Basic和.NET Framework 4.6.1,名为VBWebApp,我做了以下操作,使其连接到我的IdentityServer4实例:

  1. 安装包

    安装包Microsoft.Owin.Host.SystemWeb安装程序包Microsoft.Owin.Security.Cookies安装包Microsoft.Owin.Security.OpenIdConnect

  2. 添加Startup.vb

    导入Microsoft.Owin.Extensions导入Microsoft.Owin.Security.Cookies导入Microsoft.Owin.Security.OpenIdConnect进口Owin

    公共类启动公共子配置(ByVal应用程序作为IAppBuilder(Dim settings As NameValueCollection=ConfigurationManager.AppSettings

    app.UseCookieAuthentication(New CookieAuthenticationOptions With {
    .AuthenticationType = "cookie"
    })
    app.UseOpenIdConnectAuthentication(New OpenIdConnectAuthenticationOptions With {
    .SignInAsAuthenticationType = "cookie",
    .Authority = settings("Authority").ToString(),
    .ClientId = settings("ClientId").ToString(),
    .ClientSecret = settings("ClientSecret").ToString(),
    .RedirectUri = settings("RedirectUri").ToString(),
    .ResponseType = "code",
    .Scope = "openid profile",
    .RedeemCode = True
    })
    app.UseStageMarker(PipelineStage.Authenticate)
    End Sub
    

    终端类

  3. 在web.config 的Configuration标记下添加以下内容

  4. 在system.web标签中添加以下内容

  5. 在IdentityServer4实例中的Config.cs中添加以下内容

    新客户端{ClientId=";VBWebApp";,ClientSecrets={new Secret("Secret".Sha256(((},AllowedGrantTypes=GrantTypes.Code,RedirectUris={quot;https://localhost:44375"},PostLogoutRedirectUris={"https://localhost:44375"},AllowedScopes=新列表{IdentityServerConstants.StandardScopes.OpenId,IdentityServerConstants.StandardScopes.Profile,}}

还有更多的工作要做,但至少现在我已经具备了为应用程序A、B和C进行身份验证所需的步骤。

最新更新