Co powinienem zrobić dalej z tokenem aby mieć dostęp do stron z atrybutem [Authorize] ?
Korzystam z ASP.NET Core 3.1
Przekazać go do nagłówka żądania, domyślnie Bearer, które wysyłasz.
PS Przed ReadAsStringAsync brak await.
Twój request do API powinien posiadać Authorize Header
, w którym podajesz wartość Bearer {token}
(oczywiście bez { })
Dodałem wartość "bearer "+{token} i nadal nic :(
Ty odpytujesz swoje API swoim API?
Powiedz może szerzej co chcesz zrobić, bo wygląda na to, że coś dziwnego.
Napisałem przykładową metodę w moim API która zwraca token
I teraz z drugiej aplikacji MVC chcę za pomocą tokenu dostać się do kontrolera który ma atrybut [Authorize] gdzie dodam tego użytkownika do widoku.
Ale zapytanie o token nie może być z [Authorize]
. Taki endpoint w API musi być "publiczny". Jak niby masz zamiar taki token pozyskać nie mając tokenu? Twoim problemem nie jest token, czy jego brak tylko jaki błąd dostajesz Co nie działa? Dostajesz 401?
Wywala błąd 401. Token normalnie mam juz w drugiej aplikacji w MVC w której jest problem.
Druga aplikacja, aby poprawnie zweryfikować token, powinna znać konfigurację do dekodowania (np. sekret). Ponadto, jak robisz MVC, to powinieneś mieć w widoku JavaScript, który przechowa Ci token na froncie, a potem doda Ci do do nagłówków żądania.
Jeżeli chodzi ci o AccessTokenSecret to jest podany.
Weź sobie jakiegoś Postmana, czy inną Insomnię i sprawdź czy ten flow działa. Tutaj możesz sobie sprawdzić co zawiera sam token https://jwt.io Jak token wygląda na taki ok, to jest jeszcze szansa, że zepsute jest jego sprawdzenie na endpoincie do którego uderzasz.
Możesz dopisać sobie logowanie dlaczego JWT nie przeszło
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o => ConfigureJwtBearerOptions(o));
private static void ConfigureJwtBearerOptions(JwtBearerOptions options)
{
...
options.Events.OnAuthenticationFailed = c =>
{
Console.WriteLine(c.Exception.ToString());
return Task.CompletedTask;
};
}