OAuth2安全API的设计注意事项

时间:2016-08-19 13:19:39

标签: api identityserver3 openid-connect oauth2

我会给出一个场景作为我的问题的前提:

  • CRM客户端应用
  • 客户API
  • IDP保护API
  • 客户api要求的范围:“客户”
  • CRM客户端应用OAuth2客户端已授予“客户”范围访问权限
  • CRM客户端应用请求带有“客户”范围的令牌,并将API与令牌一起使用

在某些时候,开发人员决定是时候将客户API中的发票重构为新的Invoices API,现在需要范围“发票”。要使Customers API将预期结果返回给CRM客户端应用程序,它现在必须调用Invoices API并将该部分信息输出到调用应用程序。因此,由于新的范围要求,传递令牌将不起作用。

客户API在不破坏要求CRM客户端应用程序添加新范围的变更的情况下,将预期结果返回到CRM应用程序的最佳方法是什么?

一种方法是客户API作为客户端凭证可信子系统进行身份验证,但Invoices API将如何了解启动用户?这里的想法是在不破坏现有客户端应用程序的情况下分离功能。

1 个答案:

答案 0 :(得分:2)

使用多跳或行为授予系统可以帮助您。如果我理解正确您的方案是:Client -> API1 -> API2

如果您希望每个图层都有自己的范围(根据您的说明进行操作),那么act-as tokens会对您有所帮助。

IdentityServer samples issue #182提供了一个非常好的摘要。您可以在their Git repository中找到该方案的示例。