【发布时间】:2017-04-20 18:43:53
【问题描述】:
IdentityServer 中是否存在范围只能属于单个 ApiResource 的限制?
在我看来,IdentityServer 使用允许的范围列表来构建一个受众列表来查找他们所属的 ApiResource,并且每个范围只属于一个 ApiResource。
我们定义了以下一组 ApiResources 及其范围:
ApiResource Scopes
------------------------------
api/Orders api/Orders
api/Products api/Producs
这在我们的 JWT 中产生了一组很好的受众和范围值:
aud:
api/Orders
api/Products
scope:
api/Orders
api/Products
但是,当我们犯了一个错误,通过为两个 ApiResource 重用相同的范围来搞乱配置时,事情变得有点奇怪:
ApiResource Scopes
------------------------------
api/Orders api/Products
api/Products api/Products
我们最终得到了这个:
aud:
api/Orders
scope:
api/Products
似乎构建受众列表的方式是调用IResourceStore.GetAllResources()(我们已经实现它以检索 ApiResources 及其关联范围的完整目录),然后获取与给定允许匹配的第一个 ApiResource范围,只要没有其他 ApiResources 也具有相同的范围,它应该可以正常工作。 :)
-S
【问题讨论】: