Auth Flashcards

1
Q

Dlaczego zbyt długo aktywny AccessToken (JWT) może być niebezpieczny?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Do czego służy refresh token?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Do czego służy metoda .AddDefaultTokenProviders()?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Jak skonfigurować autentykację z pomocą JWT?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Jak skonfigurować metodę do logowania (wydawanie token’u)?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Jaka forma uwierzytelnienia była popularna przed 2010?

A

Cookies and forms, SAML (SSO)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Co zmieniło potrzeby związane z uwierzytelnieniem po roku 2010?

A

Zaczęły pojawiać się aplikacje mobilne, aplikacje JS, delegated authorization (problem, który dał początek oAuth)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Jak problem “delegated authorization” był rozwiązany przez yelp?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Jakie aplikacje nie korzystają jeszcze z oAuth2?

A

Wiele banków nie korzystają jeszcze z oAuth2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Jak jest lista pojęć/terminów oAuth 2.0?

A
Resource owner
Client
Authorization server
Resource server
Authorization grant
Redirect URI
Access token
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Za co odpowiedzialny jest resource owner?

A

Zarządza danymi do których klient chce uzyskać dostęp (są zabezpieczone).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Za co odpowiedzialny jest client?

A

Client chce uzyskać dostęp do jakiegoś zasobu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Za co odpowiedzialny jest Authorization server?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Czym jest authorization grant?

A

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).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Czym jest RedirectURI?

A

W procesie uwierzytelnienia kiedy klikamy, że “zgadzamy się” - zostajemy przekierowani. RedirectURI określa, gdzie na końcu tego procesu się znajdziemy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Czym jest access token?

A

Access token to “klucz”, który pozwala uzyskać dostęp do zasobu.

17
Q

Jak określać do czego dajemy dostęp? Jaki termin występuje na to w oAuth?

A

Terminem tym jest scope. Wymaga to akceptacji ze storny użytkownika (consent).

18
Q

Co jest nazywane jako backchannel i frontchannel?

A

Backchannel jest bardziej bezpieczny, a front channel mniej bezpieczny.

19
Q

Jak można dokładniej opisać backchannel?

A

Np. komunikacja międyz moim serwerem, a serwerem Google

20
Q

Jak można dokładniej opisać frontchannel?

A

Np. komunikacja między klientem (przeglądarką) i serwerem.

21
Q

W którym kanale zachodzi komunikacja z serwerem autoryzacji?

A

Komunikacja zachodzi z pomocą backchannel. Jest tak dlatego, że brany jest pod uwagę secret znany wyłącznie przez serwer. Dzięki temu klient nie jest w stanie go uzyskać - i np. przed nami uzyskać access token’a (jeśli wykradli nasz kod).