在 IdentityServer4 中使用哪些 GrantTypes?

Which GrantTypes to use in IdentityServer4?

我正在使用带有 ASP.NET Core 1.1 和 Angular 2.

的 IdentityServer 4

我需要从 3 个不同的来源访问 API:

  1. 一个移动应用;
  2. angular 2 应用程序包含在 ASP.NET Core MVC 中;
  3. 在 ASP.NET 核心 MVC 控制器中。

我应该为每一个使用哪个 GrantTypes?

API 本身没有 GrantType,它只是使用令牌(JWT 或 Reference)。

  1. 对于移动应用程序,在客户端应用程序中保护凭据的常见安全问题适用。换句话说,不需要客户端机密的流程,理想情况下,不会为用户提供实际的访问令牌。授权码/混合流符合这个标准。这种方法的局限性是所有通信都需要通过托管访问令牌的服务器进行代理。
  2. 由于它包含在 ASP.NET 中,cookie 是一个选项。隐式流程或授权代码/混合流程在这里工作得很好。如果您需要访问刷新令牌,请使用 Authorization/Hybrid。
  3. 同#2

有关更多详细信息,Auth0 有一个很好的指南: https://auth0.com/docs/api-auth/which-oauth-flow-to-use

倒序...

3授权码(因为你的秘密不会离开你信任的环境)

2隐式(因为你的代码确实离开了你信任的环境——即在客户端的浏览器上运行,所以任何秘密都可以访问)

1。对我来说,隐式,因为你不能真正信任移动环境(即代码可能会被审查,你的秘密可能会泄露)。但是,您可以使用授权码,但如果这样做,您的移动密码应该与 MVC 密码不同。

对于 MVC 和移动流程,您还可以考虑使用 Hybrid,因为它将使用服务器到服务器的通信来交换访问令牌。