IdentityServer中是否存在限制,即範圍只能屬於單個ApiResource?IdentityServer 4:範圍對於ApiResource是唯一的嗎?
在我看來,IdentityServer使用允許的範圍列表來查找它們所屬的ApiResources,並且每個範圍只屬於一個ApiResource,從而構建受衆列表。
我們已經定義了以下一組ApiResources及其範圍的:
ApiResource Scopes
------------------------------
api/Orders api/Orders
api/Products api/Producs
其中produeces一套漂亮澳元(ience),並在我們的JWT範圍值:
aud:
api/Orders
api/Products
scope:
api/Orders
api/Products
然而,當我們犯了錯誤,通過重複使用ApiResources的相同範圍來搞亂配置,事情有點奇怪:
ApiResource Scopes
------------------------------
api/Orders api/Products
api/Products api/Products
我們結束了這一點:
aud:
api/Orders
scope:
api/Products
看來,觀衆的列表中建立起來的方法是調用IResourceStore.GetAllResources()
(我們已經實現檢索ApiResources的完整的目錄和其相關聯的範圍),以及然後抓取匹配給定允許範圍的第一個ApiResource,只要沒有其他ApiResources也具有相同的作用域,這應該工作得很好。 :)
-S
謝謝!我們正在改變我們的配置結構以避免範圍重複。 –