我应该在MVC应用程序中使用哪种OpenId授权类型?码?客户凭证?

问题描述

使用ASP.NET Core 5,Angular 10和Identity Server 4,我创建了4个应用程序:

  1. 使用Identity Server 4进行身份验证;
  2. Asp.Net Core 5 API
  3. Asp.Net Core 5 MVC
  4. Angular 10 SPA

在Angular应用程序(4)上,我正在使用OIDC Client JS代码授予类型

Asp.Net Core 5 MVC应用程序(3)也需要访问API ...

我正在使用Identity Model,但是在MVC应用程序中应该使用哪种授权类型?

代码,就像在Angular应用程序中一样(这可能吗?)? 客户凭证

解决方法

  1. 如果您在MVC应用程序上登录用户,并且想要代表用户调用API,请使用Code流。 在这种情况下,MVC和角度应用程序之间的唯一区别是Asp.Net Core 5 MVC是机密客户端,您可以使用Code流。但是Angular 10 SPA客户是公共客户,您应该编码+ PKCE。 尽管建议在两种情况下都使用PKCE。

  2. 如果您只是通过MVC和作为应用程序本身而不是代表用户来调用API,则可以使用“客户端凭据”流程。此流程适用于服务器到服务器方案,并且很安全。 在这种情况下,您也应该对MVC应用进行授权。