使用运行 Identity Server 4 的 ASP.NET CORE 3 身份验证服务器对 ASP.NET MVC 5 应用程序(目标 .net 4.5)进行身份验证
Authenticate an ASP.NET MVC 5 app (targets .net 4.5) with an ASP.NET CORE 3 auth server that runs Identity Server 4
我目前正在使用 Identity Server 4 构建一个身份验证服务器,并使用一个 spa (react) 应用程序对其进行身份验证。我现在还想使用另一个当前存在的应用程序(这是 ASP.NET MVC 5,目标是 .NET 4.5,目前使用 ASP.NET Identity 2 管理 类 来管理用户和 signout/sign 在使用 cookie 身份验证时)并更新它,以便它可以使用这个新的身份验证服务器从外部登录(这样用户就可以使用现有的身份验证登录,但现在也可以使用这个身份验证服务器 - 这样用户会话就可以在此现有应用程序和此其他水疗应用程序之间共享)。据我了解,问题是我们需要使用 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 的身份验证服务器来完成这项工作的方法?唯一的方法是使用 GrantType.Implcit 流程而不是使用 GrantType.Code 要求 PKCE,现在是否建议这样做?
谢谢!
在这种情况下,您要处理 2 个客户端,spa 应用程序和 ASP.NET MVC 应用程序,每个客户端都可以有自己的流程(授权类型)。对于水疗应用,我们可以使用 authorization code flow
和 PKCE
。 Implicit flow
用于 ASP.NET MVC。
建议将 PKCE 用于交互式应用程序:
a front-channel step via the browser where all “interactive” things happen, e.g. login page, consent etc. This step results in an authorization code that represents the outcome of the front-channel operation.
a back-channel step where the authorization code from step 1 gets exchanged with the requested tokens. Confidential clients need to authenticate at this point.
您描述的 MVC 应用只是进行身份验证,不用担心,使用隐式没问题。
我有一个 post 来实现它 here
我目前正在使用 Identity Server 4 构建一个身份验证服务器,并使用一个 spa (react) 应用程序对其进行身份验证。我现在还想使用另一个当前存在的应用程序(这是 ASP.NET MVC 5,目标是 .NET 4.5,目前使用 ASP.NET Identity 2 管理 类 来管理用户和 signout/sign 在使用 cookie 身份验证时)并更新它,以便它可以使用这个新的身份验证服务器从外部登录(这样用户就可以使用现有的身份验证登录,但现在也可以使用这个身份验证服务器 - 这样用户会话就可以在此现有应用程序和此其他水疗应用程序之间共享)。据我了解,问题是我们需要使用 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 的身份验证服务器来完成这项工作的方法?唯一的方法是使用 GrantType.Implcit 流程而不是使用 GrantType.Code 要求 PKCE,现在是否建议这样做?
谢谢!
在这种情况下,您要处理 2 个客户端,spa 应用程序和 ASP.NET MVC 应用程序,每个客户端都可以有自己的流程(授权类型)。对于水疗应用,我们可以使用 authorization code flow
和 PKCE
。 Implicit flow
用于 ASP.NET MVC。
建议将 PKCE 用于交互式应用程序:
a front-channel step via the browser where all “interactive” things happen, e.g. login page, consent etc. This step results in an authorization code that represents the outcome of the front-channel operation.
a back-channel step where the authorization code from step 1 gets exchanged with the requested tokens. Confidential clients need to authenticate at this point.
您描述的 MVC 应用只是进行身份验证,不用担心,使用隐式没问题。
我有一个 post 来实现它 here