Architecture OpenId connect中作用域的粒度是多少?

Architecture OpenId connect中作用域的粒度是多少?,architecture,oauth-2.0,openid-connect,Architecture,Oauth 2.0,Openid Connect,我有一个身份提供者、一些客户端应用程序和一堆作为RESTful服务实现的API资源。一些客户机需要一个API,其他客户机可能需要几个API。也可能存在“API间依赖关系”,例如。 客户端需要API X,API X需要API Y 在这种情况下,什么是合适的范围粒度?有什么最佳实践吗 我可以想象以下解决方案: 每个API一个作用域:可能会导致较大的令牌。此外,在上面的示例中,客户机并不知道它实际上也需要API Y 所有API都有一个作用域:这是可行的(用户同意的粒度不是问题)。然而,客户端最终得到了

我有一个身份提供者、一些客户端应用程序和一堆作为RESTful服务实现的API资源。一些客户机需要一个API,其他客户机可能需要几个API。也可能存在“API间依赖关系”,例如。 客户端需要API X,API X需要API Y

在这种情况下,什么是合适的范围粒度?有什么最佳实践吗

我可以想象以下解决方案:

  • 每个API一个作用域:可能会导致较大的令牌。此外,在上面的示例中,客户机并不知道它实际上也需要API Y
  • 所有API都有一个作用域:这是可行的(用户同意的粒度不是问题)。然而,客户端最终得到了一个超级强大的访问令牌,而实际上它并不需要这个令牌
  • 每个API一个作用域,但使用引用标记:与解决方案1相同,但标记仍然很小。这将导致大量调用内省端点

  • 在具有大量应用程序的大型企业实现中,我们经常对作用域使用URI,而且它们可以非常精细。每个应用程序或API的积垢是典型的

    我们还看到一些授权服务器将LDAP中的组CNs(有时为50或更多)作为作用域提供


    还要记住

    它依赖于实现,但可以想象,只要请求范围X,AS就会添加范围Y;OTOH可以通过这样一种方式实现后端,即API X获得自己的令牌来访问API Y,例如使用客户机\ U凭据授权