2017-04-20 5 views
0

Gibt es eine Einschränkung in IdentityServer, dass Bereiche nur zu einer einzigen ApiResource gehören können?IdentityServer 4: Sind Scopes einzigartig für die ApiResource?

Es scheint mir, dass IdentityServer eine Liste von Zielgruppen erstellt, die die Liste der zulässigen Bereiche verwenden, um die ApiResources nachzuschlagen, zu denen sie gehören, und dass jeder Bereich nur zu einer einzigen ApiResource gehört.

haben wir folgenden Satz von ApiResources und Geltungsbereiche definiert:

ApiResource  Scopes 
------------------------------ 
api/Orders  api/Orders 
api/Products api/Producs 

, die einen schönen Satz von Aud (ience) und Umfang Werte in unserer JWT produeces:

aud: 
api/Orders 
api/Products 

scope: 
api/Orders 
api/Products 

Wenn jedoch Wir haben den Fehler gemacht, die Konfiguration zu verpfuschen, indem wir den gleichen Bereich für beide ApiResources wiederverwendet haben, die Dinge wurden ein bisschen komisch:

ApiResource  Scopes 
------------------------------ 
api/Orders  api/Products 
api/Products api/Products 

Wir endete mit auf den Punkt:

aud: 
api/Orders 

scope: 
api/Products 

Es scheint, dass die Art und Weise die Liste der Zielgruppen aufgebaut wird durch den Aufruf IResourceStore.GetAllResources() ist (was wir den vollständigen Katalog von ApiResources und ihre zugehörigen Bereiche abzurufen implementiert), und dann ergreift die erste ApiResource, die einem gegebenen erlaubten Bereich entspricht, was gut funktionieren sollte, solange keine anderen ApiResources denselben Gültigkeitsbereich haben. :)

-S

Antwort

1

Bereichsnamen müssen eindeutig sein.

Wenn Sie die gleichen Bereichsnamen in mehreren APIs verwenden möchten, setzen Sie sie z. "api1.read", "api2.read" oder ähnlich.

+0

Danke! Wir ändern unsere Konfigurationsstruktur, um doppelte Bereiche zu vermeiden. –

Verwandte Themen