/ / canot call userinfo z powodu błędu nieprawidłowego zakresu - asp.net, oauth, asp.net-identity-2, identityserver3

Canot call userinfo z powodu błędu nieprawidłowego zakresu - asp.net, oauth, asp.net-identity-2, identityserver3

Konfiguruję serwer tożsamości3 w firmie Microsofttożsamość przechowywana w ef 6 Mogę "zalogować się" w punkcie końcowym / token, ale kiedy próbuję uzyskać dostęp do / userinfo, otrzymuję błąd zasięgu. kiedy próbuję dodać zakresy do mojego / tokena, nie działają. próbował edytować klienta, aby dodać zakresy i nadal tkwi. klient jest przepływem właściciela zasobu. po prostu potrzebuję uzyskać userinfo, aby uzyskać nazwę i role dla użytkownika.

1) jakiego zakresu potrzebuję, aby uzyskać dostęp do informacji o użytkownikupunkt końcowy? Nie mam wystarczającego zakresu na wszystkie moje próby. 2) Edytowałem bazę danych SQL i kod, aby mój klient mógł mieć więcej zakresów, ale nie działa. jak to debugować?

również używam bolenia.tożsamość sieciowa przechowywana w sql i id serwer ef do przechowywania tokenów, klientów, zakresów i sekretów, dobrze próbuję, ale nie jestem pewien czy to prawda, tabele zostały utworzone, ale nie widzę żadnych wierszy w tabeli tokenów zdarzenie, chociaż został wydany token. Mam teraz dwie bazy danych: jedną z tokenem / klientem, a drugą z użytkownikami i rolami aspnet. czy muszę utworzyć tę jedną bazę danych?

wygląda na to, że częścią mojego problemu jest zpróbka serwera tożsamości do korzystania z struktury encji do przechowywania klientów, zakresów i powiązanych danych. wygląda na to, że niektórych pozycji brakuje w listach zakresów lub roszczeń dotyczących zasięgu i / lub klientów, więc gdy próbuję się zalogować z parametrem zakresu, otrzymuję odrzucenie, gdy nie mogę znaleźć wiersza w tabeli zakresów. pracując nad tym, jak to naprawić i mam nadzieję, że działa ...

czy zakres wymaga roszczeń dotyczących zakresu? muszę sprawdzić, czy mogę znaleźć informacje na ten temat.

Odpowiedzi:

0 dla odpowiedzi № 1

jego "otwarty" zakres, jak mówią doktorzy. https://identityserver.github.io/Documentation/docsv2/endpoints/userinfo.html


0 dla odpowiedzi nr 2

W razie wątpliwości wystarczy pobrać aktualny kod źródłowy z Github i zastosować punkty przerwania, zamiast używać pakietu Nuget.

Właśnie wychodzi z pamięci (może to nie być całkowicie dokładne).

Wierzę, że UserInfoEndpoint wywołujeUserService.GetProfileDataAsync. UserInfoEndpoint akceptuje zakresy, ale GetProfileDataAsync przyjmuje tylko żądania "RequestedClaimTypes". Tak więc gdzieś pośrodku będzie przyjmowanie zasięgów wysyłanych do punktu końcowego i otrzymywanie listy wszystkich typów roszczeń, które mieszczą się w zakresach.

Najważniejszą rzeczą, o której należy pamiętać, jest to, że zakresy przekazywane do UserInfoEndpoint muszą być zakresami Identity. Punkt końcowy nie zwróci roszczeń należących do zakresów zasobów.

Więc po prostu krótki wybieg ...

  1. Serwer otrzymuje zasięgi wysyłane do UserInfoEndpoint
  2. Z otrzymanych zakresów analizuje tylko zakresy tożsamości
  3. Znajdź typy roszczeń przypisane do zakresów tożsamości
  4. Zmniejsza listę typów roszczeń do GetProfileDataAsync jako "context.RequestedClaimTypes".
  5. W tym momencie niestandardowa logika określa sposób przekształcania żądania RequestedClaimTypes na IssuedClaims.

Zgaduję, że przechodzisz zakresy zasobów do UserInfoEndpoint.


0 dla odpowiedzi № 3

w końcu naprawiłem mój problem: Potrzebowałem więcej zakresów w bazie danych SQL, próbka serwera id dla v3 używająca struktury encji nie zawierała niektórych elementów tego samego zakresu, których oczekuje próba serwera tożsamości, spowodowało to, że wywołanie tokenu logowania zakończyło się niepowodzeniem z niepoprawnym zasięgiem. Zmodyfikowałem kod c # dla zakresów i klientów, aby uzyskać to, czego potrzebowałem, porzuciłem i ponownie utworzyłem tabele sql, a następnie zaczęło działać. Dodałem także nowe roszczenia zakresu i zakresu, aby dodać niestandardowe oświadczenia, których potrzebuje nasza aplikacja.

Podłączyłem źródło, aby umożliwić mi debugowanie tegoNaprawdę pomogłem, ponieważ mogłem podążać za logiką i zobaczyć, gdzie to nie działa. to była ogromna pomoc. Zobaczę później, czy mogę wysłać do źródła, czego brakowało próbki, to był prawdziwy problem. może to również być dobre, gdybyśmy mieli jakiś przewodnik, jak uzyskać standardowe informacje o użytkownikach / profilach. Mam to, ale to także trochę debugowania źródłowego, aby zobaczyć, w jaki sposób serwer id dzwoni do sklepów, aby uzyskać informacje, dzięki czemu mogłem zrozumieć, jak dotknąć i przekazać dane do przekazania rozmówcy.

Najważniejsze jest to, że próbki mają różne zestawy zakresów i twierdzeń w co najmniej jednym miejscu i to był kluczowy problem.

reszta uczy się, jak używać zakresów i roszczeń zakresu, aby dodać do punktu końcowego informacji o użytkowniku dla potrzeb aplikacji.