Auth Flashcards
Dlaczego zbyt długo aktywny AccessToken (JWT) może być niebezpieczny?
Ponieważ jeśli ktoś go przejmie to może uzyskiwać z jego pomocą dostęp do zasobów. Ponadto nie mamy możliwości jego anulowania - musielibyśmy np. zmienić klucz po stronie serwera. Wtedy anulowalibyśmy wszystkich użytkowników i ich token’y.
Do czego służy refresh token?
Refresh token pozwala nam na wymianę refresh token’y z powrotem na access token. Ponadto serwer może umieścić refreshToken na blackliscie. Tym samym wymuszając ponowne logowania użytkownika.
Refresh token powinien być przechowywany w bezpieczny sposób.
Do czego służy metoda .AddDefaultTokenProviders()?
Związana jest z resetowaniem hasła, autentykacja dwu częściową (email i sms). DataProtectorTokenProvider - data protection block - hasła, które mogę być później deserializowane. EmailTokenProvider i PhoneNumberTokenProvider - wykorzystują algorytm Time-based One-time password algorytm (TOTP) - pozwalają na generowanie łatwego do zapamiętania dla użytkownika hasła.
Jak skonfigurować autentykację z pomocą JWT?
1) W Startup.cs dodajemy app.UseAuthentication() - w ten sposób konfigurujemy middleware odpowiedzialny za autentykację.
Możemy stworzyć własnu AuthenticationHandler, który będzie współpracować z [Authorize]
Dzięki temu automatycznie będzie sprawdzany nagłówek “Authorize”.
2) W metodzie ConfigureSevices dodajemy
services.AddAuthentication(JwtBearerDetaults.AuthenticationSheme).AddJwtBearer(options => options.TokenValidationParameters …. i określamy parametry. W jaki sposób
ma być walidowany token.
Jak skonfigurować metodę do logowania (wydawanie token’u)?
1) Sprawdzamy czy użytkownik istnieje (hasło) - PasswordHasher
2) Następnie tworzymy tablicę Claim’sów
3) Instancję klasy SymmetricSecurityKey(klucz)
4) Instancję SigningCredentials(key, SecurityAlg.HmacSha256)
5) Tworzymy nową instancję JwtSecurityToken
6) Tworzymy refresh-token i zapisujemy
7) Oba tokeny zwracamy klientowi
Jaka forma uwierzytelnienia była popularna przed 2010?
Cookies and forms, SAML (SSO)
Co zmieniło potrzeby związane z uwierzytelnieniem po roku 2010?
Zaczęły pojawiać się aplikacje mobilne, aplikacje JS, delegated authorization (problem, który dał początek oAuth)
Jak problem “delegated authorization” był rozwiązany przez yelp?
Przykład, gdzie na ekranie logowanie należy wybrać do jakiego systemu się logujemy - prosili o hasło użytkownika do konta gmail. Teraz moglibyśmy poprosić o hasło do oAuth2.
Jakie aplikacje nie korzystają jeszcze z oAuth2?
Wiele banków nie korzystają jeszcze z oAuth2
Jak jest lista pojęć/terminów oAuth 2.0?
Resource owner Client Authorization server Resource server Authorization grant Redirect URI Access token
Za co odpowiedzialny jest resource owner?
Zarządza danymi do których klient chce uzyskać dostęp (są zabezpieczone).
Za co odpowiedzialny jest client?
Client chce uzyskać dostęp do jakiegoś zasobu
Za co odpowiedzialny jest Authorization server?
Serwer autoryzacyjny odpowiada za wydanie access_token’a. Zazwyczaj jest osobnym elementam (niepowiązanym) z resource owner’em. Czasami resource server i authorization server to te same serwery.
Czym jest authorization grant?
Jest to “pozwolenie”, które na podstawie danych uwierzytelniających uzyskujemy w procesie oAuth 2.0. Dzięki tym danym możemy uzyskać zasoby od Resource Owner’a. Dzięki “authorization grant” możemy uzyskać access token (“klucz” do zasobu).
Czym jest RedirectURI?
W procesie uwierzytelnienia kiedy klikamy, że “zgadzamy się” - zostajemy przekierowani. RedirectURI określa, gdzie na końcu tego procesu się znajdziemy.