2017-11-29 3 views
0

Ich habe eine MVC-App, die die Middleware Microsoft.AspNetCore.Authentication.OpenIdConnect gegen IdS4 (Core 1.1) verwendet. Der MVC ruft eine Back-End-Web-API mit dem Zugriffstoken auf, das nach der Authentifizierung erhalten wird. Ich benutze die "code id_token" Antwort. Ich habe die API Bereiche segmentiert, aber ich habe ganz ein paar von ihnen, das heißt 15. Wenn ich bauen die OIDCoptions ich in den Bereichen hinzufügen, die der Kunde benötigt:IdentityServer4 mit Aspnet-Kern MVC OIDC-Authentifizierung - API-Limit?

oidOptions.Scope.Add("usersRead");   // Api scope 
oidOptions.Scope.Add("usersWrite");   // Api scope 

Dieses absolut in Ordnung gearbeitet hat. Allerdings habe ich zwei weitere Bereiche und jetzt IdS berichtet die folgenden, wenn die MVC tut eine OIDC Herausforderung gegen IdS, dh bevor der Benutzer mit Login-Formular

schlecht Anfrage

präsentiert wird ich entfernen zwei beliebige Bereiche aus der Liste in meiner MVC-App und es beginnt wieder zu arbeiten. Das lässt mich glauben, dass es eine Grenze für die Anzahl der Bereiche gibt, die angefordert werden können, oder ein Problem mit der URL-Länge? Ich habe mir den Quellcode für OIDC-Middleware und IdS angeschaut und kann nichts finden, was die Anzahl der API-Bereiche einschränken würde, die ein Client anfordern könnte.

Irgendwelche Ideen?

+0

Möglicherweise kann Log weitere Informationen enthalten. Hast du die Protokolle überprüft? – Jay

+0

Versuchen Sie, zwei Bereiche aus der Anfrage zu entfernen, und machen Sie dann den dritten Namen zu lang, um zu wissen, ob das Problem "Problem mit URL-Länge" ist. –

Antwort

0

Danke für die Kommentare. Nach dem Einrichten des Protokollstreams in Azure Web App wurde das Problem sofort hervorgehoben. Tatsächlich gibt es für die Artefakte, aus denen die Tokenanforderung besteht, eine Stringlängenbeschränkung, insbesondere für die Bereichszeichenfolge mit 300 Zeichen. Wir haben die Scope-Namen gekürzt und jetzt läuft alles gut.

Als Referenz finden Sie unter: https://github.com/IdentityServer/IdentityServer4/blob/aspnetcore1/src/IdentityServer4/Configuration/DependencyInjection/Options/InputLengthRestrictions.cs

Hinweis, dies ist für dot net Kern v1.1 - ähnliche Beschränkungen für v2.0.

Verwandte Themen