Ich schreibe eine IdentityServer4-Implementierung und verwende das Quickstart-Projekt, das here beschrieben wird.Warum werden auf dem IdentityServer4-Einverständnisbildschirm doppelte Bereiche angezeigt?
Wenn Sie eine ApiResource definieren (zunächst mit InMemory-Klassen), sieht es so aus, als ob IdentityServer einen Bereich mit demselben Namen wie die Ressource erstellt. Zum Beispiel
wird ein Scope namens "api" erstellen (dies geschieht im ApiResource-Konstruktor). Wenn ich "api" als zulässiges Scope für mein Client-Objekt (mit InMemoryClients für einen Proof of Concept) hinzufüge und dieses API-Scope im Scroll-Abfragezeichenfolgeparameter in meiner Authentifizierungsanfrage von meinem JavaScript-Client anfordere, erhalte ich eine invalid_scope-Fehlermeldung.
Ich fand durch this documentation folgende Sie können Scopes fügen dem ApiResource durch die Scopes Eigenschaft wie so
new ApiResource
{
Name = "api",
DisplayName = "Custom API",
Scopes = new List<Scope>
{
new Scope("api.read"),
new Scope("api.write")
}
}
jetzt Also, wenn ich stattdessen meine ApiResource wie folgt definieren und fordern Sie die Scopes api.read und api.write (und fügen Sie sie der AllowedScopes-Eigenschaft für das Clientobjekt hinzu), dann funktioniert alles einwandfrei, mit Ausnahme der Zustimmungsseite, die doppelte Bereiche anzeigt. Es zeigt api.read 2 mal und api.write 2 mal. Siehe die Zustimmung Bildschirm hier
Die Client-Konfiguration wie folgt:
new Client
{
ClientId = "client.implicit",
ClientName = "JavaScript Client",
AllowedGrantTypes = GrantTypes.Implicit,
AllowAccessTokensViaBrowser = true,
RedirectUris = { "http://localhost:3000/health-check" },
PostLogoutRedirectUris = { "http://localhost:3000" },
AllowedCorsOrigins = { "http://localhost:3000" },
AllowedScopes = {
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"customApi.read", "customApi.write"
}
}
Warum ist das passiert? Mache ich etwas offensichtlich falsch?
Update: Hier ein Teil der Entdeckung Dokuments, das das Scopes zeigt nur einmal aufgelistet ...
Wie viele API-Ressourcen haben Sie? Ihre Bereiche werden dupliziert. Bitte denken Sie darüber nach, 'scopes_supported' Inhalte von Ihrem'/.well-known/openid-configuration' Endpunkt zu veröffentlichen. –
@IlyaChumakov Ich postete es.Ich habe definitiv nur eine API-Ressource, also bin ich verloren, warum dies geschieht –