2017-04-20 44 views
0

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

回答

1

範圍名稱必須是唯一的。

如果您想在多個API中使用相同的作用域名稱, 「api1.read」,「api2.read」或類似的。

+0

謝謝!我們正在改變我們的配置結構以避免範圍重複。 –