Uwierzytelnianie a autoryzacja

625

Jaka jest różnica w kontekście aplikacji internetowych? Często widuję skrót „auth”. Czy stoją za auth -entication lub auth -orization? Czy jest to jedno i drugie?

daGrevis
źródło
51
pamiętaj o tym: uwierzytelnianie sprawdza poświadczenia, autoryzacja sprawdza uprawnienia.
Onur Yıldırım
1
Duplikat krzyżowy: serverfault.com/q/57077
Kyll
Ostatnio dla skrótów, które widziałem authndla uwierzytelnienia i authzautoryzacji
jdf
Czy to odpowiada na twoje pytanie? Czy istnieje różnica między uwierzytelnianiem a autoryzacją?
paxdiablo

Odpowiedzi:

864

Uwierzytelnianie to proces ustalania, że ​​ktoś naprawdę jest tym, za kogo się podaje.

Autoryzacja odnosi się do reguł określających, kto może robić co. Na przykład Adam może być upoważniony do tworzenia i usuwania baz danych, podczas gdy Usama jest upoważniony tylko do odczytu.

Te dwie koncepcje są całkowicie ortogonalne i niezależne, ale obie mają kluczowe znaczenie dla projektu bezpieczeństwa, a niepowodzenie w uzyskaniu jednej poprawnej otwiera drogę do kompromisu.

W kategoriach aplikacji internetowych, bardzo nieuprzejmie, uwierzytelnianie ma miejsce, gdy sprawdzasz dane logowania, aby sprawdzić, czy rozpoznajesz użytkownika jako zalogowanego, a autoryzacja polega na sprawdzeniu w kontroli dostępu, czy zezwalasz mu na przeglądanie, edytowanie, usuwanie lub tworzyć treści.

Kerrek SB
źródło
32
Definicje wydają się dobre, ale z pewnością nie wydają się niezależne. Jak zdefiniowano, czy autoryzacja nie oznacza również uwierzytelnienia ? Jak możesz zezwolić na operację usuwania bazy danych Adama, jeśli masz wątpliwości, że to on ? Innymi słowy, jeśli operacja usunięcia Adama jest autoryzowana, mam nadzieję, że oznacza to, że Adam jest uwierzytelniony.
Timo,
7
@Timo: Aplikacja prawdopodobnie będzie chciała robić obie te rzeczy, ale niezależnie od tego są to koncepcje ortogonalne. Twój szef może przeglądać uprawnienia pracowników do dostępu do kluczowych elementów firmy, firmowego odrzutowca i lodówki do piwa bez obawy, która konkretna osoba w kanale CCTV pasuje do nazwisk w arkuszu kalkulacyjnym. Ten ostatni byłby przedmiotem troski ochroniarza.
Kerrek SB,
1
Pojęcia są zdecydowanie ortogonalne. Uwierzytelnianie niekoniecznie potwierdza Twoją tożsamość. Może to oznaczać twierdzenie o sobie, np. Wiek. Kiedy pijesz, potwierdzasz swój wiek, pokazując dowód tożsamości. Następnie możesz zostać upoważniony do picia w zależności od wieku i jurysdykcji, w której się znajdujesz (możesz pić, jeśli> 21 w USA> 18 w Europie)
David Brossard,
1
@ Sinjai: Myślę, że chodzi o to, że są to obawy ortogonalne i można je rozwiązać za pomocą oddzielnych udogodnień: np. (Zaufany) bramkarz przy drzwiach może ustalić wiek klienta, a różne usługi w zakładzie mogą mieć różny wiek limity, ale wszyscy wykorzystają wartość uzyskaną od bramkarza, aby podjąć decyzję o przyjęciu.
Kerrek SB
1
Innym sposobem spojrzenia na to (w kontekście przykładu barroom) byłoby wzięcie pod uwagę, że uwierzytelnianie to proces dopasowywania zdjęcia na dowodzie osobistym do osoby stojącej przed tobą, podczas gdy autoryzacja to proces sprawdzania, czy jest to wiek spełnia wymagania prawne. Moim zdaniem element tej mieszanki, który powoduje rozmycie linii, polega na tym, że oba testy muszą być zarówno rozpoznawalne, jak i odporne na fałszowanie (identyfikator jest fałszywy), co większość ludzi uważa raczej za kwestię uwierzytelnienia niż równie ważne dla certyfikacji auth-c i auth-z.
Ryan Hansen
660

Krótko mówiąc, proszę. :-)

Uwierzytelnianie = login + hasło (kim jesteś)

Autoryzacja = uprawnienia (co możesz robić)

Krótkie „auth” najprawdopodobniej odnosi się albo do pierwszego, albo do obu.

Geo
źródło
3
Słodki jak bułka z
masłem
Lubię to, krótkie i słodkie.
Król
5
Wciąż nie rozumiem, dlaczego nagłówek autoryzacji HTTP przenosi informacje uwierzytelniające… Czy to niefortunne nazywanie?
Jens
@Jens Krótka odpowiedź: tak. Roy Fielding nie wiedział wtedy lepiej ... ;-) </tongue-in-cheek>
Per Lundberg
@Jens Też się zastanawiam. Uważam, że intuicja tej odpowiedzi jest pomocna. Ponieważ HTTP jest bezstanowy , informacje uwierzytelniające muszą być wysyłane wraz z każdym żądaniem, a nie tylko żądaniem początkowym i końcowym (np. Ustanawianie bezpiecznej sesji i wysyłanie żądań bez autoryzacji pomiędzy nimi). Dlatego nagłówek tego żądania powinien być autoryzacją , ponieważ prawie zawsze zawiera inne intencje (pobieranie danych, img, ...), a nie wyłącznie uwierzytelnianie .
Minh Nghĩa
83

Jak ujmuje to uwierzytelnianie vs autoryzacja :

Uwierzytelnianie to mechanizm, dzięki któremu systemy mogą bezpiecznie identyfikować swoich użytkowników. Systemy uwierzytelniania zapewniają odpowiedzi na pytania:

  • Kim jest użytkownik?
  • Czy użytkownik naprawdę jest tym, za kogo się reprezentuje?

Z kolei autoryzacja to mechanizm, za pomocą którego system określa, jaki poziom dostępu konkretnego uwierzytelnionego użytkownika powinien mieć do zabezpieczonych zasobów kontrolowanych przez system. Na przykład system zarządzania bazą danych może zostać zaprojektowany w taki sposób, aby zapewnić określonym osobom możliwość pobierania informacji z bazy danych, ale nie możliwość zmiany danych przechowywanych w bazie danych, a innym osobom możliwość zmiany danych. Systemy autoryzacji zapewniają odpowiedzi na pytania:

  • Czy użytkownik X jest upoważniony do dostępu do zasobu R?
  • Czy użytkownik X jest upoważniony do wykonania operacji P?
  • Czy użytkownik X jest upoważniony do wykonania operacji P na zasobie R?

Zobacz też:

Sebastian Paaske Tørholm
źródło
34

Wolę weryfikację i uprawnienia niż uwierzytelnianie i autoryzację.

W mojej głowie i kodzie łatwiej jest myśleć o „weryfikacji” i „pozwoleniach”, ponieważ te dwa słowa

  • nie brzmi podobnie
  • nie mam tego samego skrótu

Uwierzytelnianie to weryfikacja, a autoryzacja to sprawdzanie uprawnień. Auth może oznaczać albo, ale jest częściej używane jako „Autoryzacja użytkownika”, tj. „Autoryzacja użytkownika”

Aditya Mittal
źródło
2
Wydaje się, że weryfikacja IMHO ma nieco bardziej otwarty zakres niż uwierzytelnianie, chociaż uwierzytelnianie wydaje się być pewnego rodzaju weryfikacją, nie każda weryfikacja jest uwierzytelnieniem ... więc powiedziałbym, że zawsze potrzebny jest kontekst: weryfikacja dostępu użytkownika itp., Uwierzytelnianie zdaje się zawsze zdarzać na polu „czy on naprawdę jest facetem / maszyną?” (bij mnie, jeśli się mylę, nie native speaker, ale: „zweryfikować” podane informacje są dokładne autentykacje vs. wydaje się mieć coś wspólnego z poznaniem osoba / maszyna jest jeden on / ona udaje)
Beachwalker
14

Zamieszanie jest zrozumiałe, ponieważ dwa słowa brzmią podobnie, a pojęcia są często ściśle powiązane i używane razem. Jak już wspomniano, powszechnie używany skrót Auth nie pomaga.

Inni już dobrze opisali, co oznacza uwierzytelnianie i autoryzacja. Oto prosta zasada, która pomaga wyraźnie rozdzielić te dwa elementy:

  • Auth Enti kation Sprawdza swój identyfikator Enti Ty (lub autentyczności , jeśli wolisz)
  • Autor zację sprawdza swój autorski ity, czyli swoje prawo do dostępu i ewentualnie coś zmienić.
Kjartan
źródło
12

Próbowałem stworzyć obraz, aby wyjaśnić to w najprostszych słowach

1) Uwierzytelnianie oznacza „Czy jesteś tym, za kogo się podajesz?”

2) Autoryzacja oznacza „Czy powinieneś być w stanie robić to, co próbujesz?”.

Jest to również opisane na poniższym obrazku.

wprowadź opis zdjęcia tutaj

Próbowałem to wyjaśnić w najlepszy możliwy sposób i stworzyłem obraz tego samego.

Rohit Ailani
źródło
4

Uwierzytelnianie to proces weryfikacji deklarowanej tożsamości.

  • np. nazwa użytkownika / hasło

Zwykle następuje autoryzacja , czyli zgoda na to i to.

  • np. uprawnienia
Jakub Truhlář
źródło
Ta odpowiedź została już podana z głębokim wyjaśnieniem.
Sonu patel
3

Dodanie do odpowiedzi @ Kerrek;

Uwierzytelnianie ma formę uogólnioną (wszyscy pracownicy mogą zalogować się do komputera)

Autoryzacja jest formularzem specjalistycznym (ale tylko administrator może zainstalować / odinstalować aplikację na komputerze)

Boobalan
źródło
1
Słowo „może” dotyczy tylko autoryzacji. Uwierzytelnianie ma niewiele lub nie ma nic wspólnego z logowaniem. Równie dobrze mógłbym poświadczyć, że jesteś Boobalanem na wiele sposobów (nie tylko nazwę użytkownika / hasło). Po uwierzytelnieniu i dowiedzeniu się, kim jesteś, równie dobrze NIE mógłbym upoważnić Cię do zalogowania się lub zrobienia czegokolwiek na mojej stronie. Jesteś uwierzytelniony, ale nie możesz robić przysiadów. Używanie słowa „może” w mowie o uwierzytelnianiu jest mylące i niepoprawne.
Suamere,
3

Uwierzytelnianie to proces weryfikacji loginu w nazwie użytkownika i haśle.

Autoryzacja to proces weryfikacji, czy możesz uzyskać dostęp do czegoś.

Sovichea Cheth
źródło
3
Ta „odpowiedź” nie dodaje niczego do już udzielonych odpowiedzi.
Ojonugwa Jude Ochalifu
1

Definicje

Uwierzytelnianie - czy jesteś osobą, za którą się podajesz?

Autoryzacja - czy masz uprawnienia do robienia tego, co chcesz?

Przykład

Aplikacja internetowa korzysta z logowania przez Google . Po pomyślnym zalogowaniu się użytkownik Google odsyła:

  1. Token JWT. Można to sprawdzić i zdekodować, aby uzyskać informacje o uwierzytelnieniu . Czy token jest podpisany przez Google? Jaka jest nazwa użytkownika i adres e-mail?
  2. Token dostępu. To upoważnia aplikację internetową, aby uzyskać dostęp do API Google w imieniu użytkownika. Na przykład, czy aplikacja może uzyskiwać dostęp do wydarzeń z Kalendarza Google użytkownika? Uprawnienia te zależą od żądanych zakresów oraz od tego, czy użytkownik na to zezwolił.

Dodatkowo:

Firma może mieć pulpit administratora, który pozwala obsłudze klienta zarządzać użytkownikami firmy. Zamiast oferować niestandardowe rozwiązanie rejestracyjne, które umożliwiłoby obsłudze klienta dostęp do tego pulpitu nawigacyjnego, firma korzysta z Google Sign-In.

Token JWT (otrzymany z procesu logowania Google) jest wysyłany na serwer autoryzacji firmy, aby dowiedzieć się, czy użytkownik ma konto G Suite w domenie hostowanej organizacji ([email protected])? A jeśli tak, to czy są członkami grupy dyskusyjnej Google utworzonej w celu obsługi klienta? Jeśli tak, wszystkie powyższe stwierdzenia możemy uznać za uwierzytelnione .

Serwer autoryzacji firmy wysyła następnie do aplikacji deski rozdzielczej token dostępu. Tego tokenu dostępu można użyć do wysyłania autoryzowanych żądań do serwera zasobów firmy (np. Możliwość wysłania żądania GET do punktu końcowego, który odsyła wszystkich użytkowników firmy).

jabacchetta
źródło
0

Authentication jest procesem weryfikacji:

  • tożsamość użytkownika w systemie (nazwa użytkownika, login, numer telefonu, adres e-mail ...) poprzez dostarczenie dowodu (tajny klucz, dane biometryczne, sms ...). Uwierzytelnianie wieloskładnikowe jako rozszerzenie.
  • sprawdzanie wiadomości e-mail za pomocą digital signature
  • suma kontrolna

Authorizationjest następnym krokiem po Authentication. Chodzi o uprawnienia / role / uprawnienia do zasobów. OAuth (otwarta autoryzacja) jest przykładem autoryzacji

yoAlex5
źródło