Korzystam z tokenów JWT w nagłówkach HTTP do uwierzytelniania żądań do serwera zasobów. Serwer zasobów i serwer uwierzytelniania to dwie osobne role robocze na platformie Azure.
Nie mogę się zdecydować, czy mam przechowywać roszczenia w tokenie, czy dołączyć je do żądania / odpowiedzi w inny sposób. Lista roszczeń wpływa na wyświetlanie elementów interfejsu użytkownika po stronie klienta, a także na dostęp do danych na serwerze. Z tego powodu chcę się upewnić, że roszczenia otrzymane przez serwer są autentyczne i sprawdzone przed przetworzeniem żądania.
Przykłady roszczeń to: CanEditProductList, CanEditShopDescription, CanReadUserDetails.
Powody, dla których chcę dla nich użyć tokena JWT, to:
- Lepsza ochrona przed edycją roszczeń po stronie klienta (tj. Hakowaniem listy roszczeń).
- Nie trzeba sprawdzać roszczeń na każde żądanie.
Powody, dla których nie chcę używać tokena JWT:
- Serwer autoryzacji musi następnie poznać listę roszczeń ukierunkowanych na aplikacje.
- Token staje się pojedynczym punktem włamania.
- Przeczytałem kilka rzeczy, które mówią, że tokeny JWT nie są przeznaczone dla danych na poziomie aplikacji.
Wydaje mi się, że oba mają wady, ale skłaniam się ku włączeniu tych roszczeń do tokena i chcę po prostu kierować tym przez osoby, które wcześniej sobie z tym poradziły.
UWAGA: Będę używać HTTPS do wszystkich żądań API, więc wydaje mi się, że token będzie bezpieczny „wystarczająco”. Używam AngularJS, C #, Web API 2 i MVC5.