在IdentityServer4中使用哪些GrantTypes?

时间:2017-05-13 23:09:10

标签: identityserver4

我正在使用带有ASP.NET Core 1.1和Angular 2的IdentityServer 4。

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

  1. 移动应用程序;
  2. ASP.NET Core MVC中包含的角度2应用程序;
  3. 在ASP.NET Core MVC控制器中。
  4. 我应该为每个使用哪种GrantTypes?

2 个答案:

答案 0 :(得分:2)

API本身没有GrantType,而只是消耗令牌(JWT或参考)。

  1. 对于移动应用程序,在客户端应用程序中保护凭据的常见安全问题适用。换句话说,一个不需要客户机密钥的流程,理想情况下,不向用户提供实际的访问令牌。授权码/混合流符合此标准。这种方法的局限性是所有通信都需要通过托管访问令牌的服务器来代理。
  2. 由于它包含在ASP.NET中,因此cookie是一种选择。隐式流程或授权代码/混合流程在这里可以很好地工作。如果您需要访问刷新令牌,请使用授权/混合。
  3. 与#2相同
  4. 有关详细信息,Auth0有一个很好的指南: https://auth0.com/docs/api-auth/which-oauth-flow-to-use

答案 1 :(得分:1)

以相反的顺序......

第3 即可。 授权码(因为您的秘密不会留下您信任的环境)

<强> 2 即可。 隐含(因为您的代码确实会留下您信任的环境 - 即在客户端的浏览器上运行,因此可以访问任何秘密)

<强> 1 即可。对我而言,隐含,因为您无法真正信任移动环境(即代码可以被审核并且您的秘密被泄露)。但是,您可以使用授权代码,但如果这样做,您的移动密钥应该与MVC密钥不同。

你也可以考虑MVC&amp;的混合。移动流,因为它将使用服务器到服务器通信进行访问令牌交换。