Chcę wdrożyć bardziej niezawodną usługę uwierzytelniania i jwt
jest to duża część tego, co chcę zrobić, i rozumiem, jak napisać kod, ale mam trochę problemów ze zrozumieniem różnicy między zastrzeżeniem iss
a aud
roszczeniami. Rozumiem, że ten definiuje serwer, który wydaje token, a ten odnosi się do aplikacji, która jest przeznaczona do użycia. Ale rozumiem, że moi odbiorcy i emitent są tym samym, myserver.com
wydaje token, aby osoby, które przychodzą, myserver.com
mogły być autoryzowane i uwierzytelniane. Chyba nie widzę rozróżnienia między tymi dwoma twierdzeniami, chociaż wiem, że jest jeden.
Był dobry artykuł namsdn
w sprawie wszystkich zastrzeżonych roszczeń i tutaj najbardziej się zdezorientowałem, ponieważ ich emitent i odbiorcy byli zupełnie inni.
źródło
Odpowiedzi:
Są one przeznaczone do scenariuszy, w których masz organ wydający token, który nie jest taki sam jak aplikacja będąca zamierzonym odbiorcą.
Nie może być inaczej dla twojej aplikacji.
Ale rozważ dużą skalowaną aplikację. Być może masz serwer OAuth lub SSO, który wystawia certyfikaty, a aplikacja, która chce tokena, który pokazuje, że serwer SSO sprawdził poświadczenia użytkownika i zezwolił mu na korzystanie z aplikacji. W takim przypadku możesz mieć token za pomocą
"aud": "aud.example.com"
i"iss": "sso.example.com"
.źródło
jwt
czy też je pominąłeś, ponieważ byłyby identyczne?aud
czasem stroną trzecią czy nie?aud
może być pojedynczą wartością lub tablicą. Powinien pasować do każdego zamierzonego odbiorcy lub procesora. Załóżmy, że jesteś użytkownikiem (lub aplikacją), który chce wywołać api.example.com w celu uruchomienia zapytania. Jeśli api.example.com ufa jakiejś zewnętrznej usłudze uwierzytelniania (np. Auth0) w zakresie obsługi uwierzytelniania, wówczas ta usługa uwierzytelniania powinna zostać wypełnionaaud
„api.example.com”, a aplikacja na „api.example.com” powinna sprawdzić, czy to walizka. Zakresy są bardziej szczegółowe niż odbiorców, a także mogą zostać uwzględnione w ładunku użytecznym.