通过运行Identity Server 4的ASP.NET CORE 3 auth服务器来验证ASP.NET MVC 5应用程序(目标是.net 4.5)。

问题描述 投票:1回答:1

我目前正在使用Identity Server 4建立一个Auth服务器,其中有一个spa(react)应用程序,可以对其进行身份验证。 我现在想把另一个当前存在的应用程序(这是ASP.NET MVC 5,目标是.NET 4.5,当前使用ASP.NET Identity 2管理类来管理用户,并使用cookie认证进行签出登录),并更新它,使它可以通过这个新的auth服务器进行外部登录(因此用户可以使用现有的认证登录,但也可以使用现在的这个auth服务器--这样用户会话就可以在这个现有的应用程序和这个其他spa应用程序之间共享)。 问题是,据我所知,我们需要使用PKCE来与认证服务器进行认证,但似乎没有办法在MVC 5应用程序中实现这一点--我可以安装Microsoft.Owin.Security.OpenIdConnect包,但它不允许使用PKCE,因为这是一个较新的东西(显然,如果你的目标是.net 4.6.1,有一种方法可以使其与该版本的OpenIdConnect包一起工作)。 我不能改变我们的目标,它需要保持.NET 4.5(升级到4.6.1或更高版本会导致构建和当前包的各种问题,这将是一个更大的任务,比我的组织目前愿意承担)。 有谁知道有什么方法可以让一个以.NET 4.5为目标的ASP.NET MVC 5应用程序和一个使用Identity Server 4的auth服务器来实现这个工作? 唯一的方法是使用GrantType.Implcit流,而不是使用GrantType.Code要求PKCE,现在是否建议这样做?

谢谢!我目前正在构建一个 auth Server 4 的 auth.Implcit 流程,而不是要求使用 GrantType.Code 的 PKCE,现在甚至会建议这样做吗?

asp.net-mvc-5 identityserver4 openid-connect
1个回答
0
投票

在这种情况下,你处理的是2个客户端,spa应用& ASP.NET MVC应用,每个客户端可以有自己的流(授予类型)。我们可以使用 authorization code flowPKCE,对于温泉app。而且 Implicit flow 的ASP.NET MVC。

PKCE建议用于交互式应用。

通过浏览器的前道步骤,所有 "互动 "的事情都会发生,例如登录页面、同意等。这一步的结果是一个代表前道操作结果的授权代码。

后渠道步骤,在这一步骤中,来自步骤1的授权代码与请求的令牌进行交换。保密的客户端需要在此时进行认证。

你描述的MVC应用,只是在做认证,那么不用担心使用隐式就可以了。

我有一个实现的帖子 此处

© www.soinside.com 2019 - 2024. All rights reserved.