Cześć, sprawa jest taka.
Mój system składa się jakby z dwóch stopni autoryzacji (chociaż nie do końca).
Aplikacja kliencka najpierw łączy się z serwerem przekazując nazwę użytkownika i hasło (to nic innego jak ApiSecret i ApiKey). Następnie serwer po poprawnej autentykacji zwraca bearer token z podstawowymi informacjami (nazwa użytkownika, jego role, id...). Przy czym zaznaczam, że tego użytkownika traktujemy jako klienta API, a nie żywą osobę :)
Następnie aplikacja pokazuje okienko do logowania. I tu już wchodzi żywy user, który wpisuje sobie swoje dane do logowania do systemu: login: "gosia", hasło: "gosia123".
Te dane są przekazywane do API, które sprawdza, czy takiego użytkownika aplikacji można zalogować.
I w tym momencie pojawia mi się problem. Do tej pory widziałem to tak:
Jeśli użytkownika można zalogować do aplikacji, to tworzę nowe ClaimsIdentity i dodaję do Identities aktualnego ClaimsPrincipal.
Pomysł świetny, ale nie działa. Okazało się, że przy kolejnym requeście nie mam tych drugich Identities. Ale już nawet wiem dlaczego. Bo ClaimsPrincipal jest tworzony na podstawie otrzymanego tokena. Tyle, że ta wiedza nie rozwiązuje mojego problemu.
Co powinienem zrobić, żeby dodać do ClaimsPrincipal dodatkowe ClaimsIdentity i, żeby były one zachowane między requestami? (do momentu, kiedy użytkownik postanowi wylogować się z aplikacji)