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

Which OpenId Grant Type should I use in MVC application? Code? Client Credentials?

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

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

关于 Angular 应用程序 (4) 我正在使用 OIDC Client JS 代码授权类型 .

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

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

Code 与 Angular 应用程序相同(这可能吗?)? 客户端凭据?

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

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