procesie logowania do aplikacji wpisujemy swój login (aplikacja to strona ufająca); • Podczas łączenia się z serwerem SSL, serwer przedstawia przeglądarce swój certyfikat (przeglądarka to strona ufająca); 1. Wstęp teoretyczny
• W procesie logowania do aplikacji korzystamy z jednej z technik uwierzytelniania (authentication mechanism), a następnie aplikacja ją weryfikuje; • Przeglądarka pobiera podpis cyfrowy złożony na certyfikacie przez urząd certyfikacji, a następnie weryfikuje go; 1. Wstęp teoretyczny
uzyskania dostępu do żądanego zasobu. • Aplikacja sprawdza uprawnienia zalogowanego użytkownika do konkretnego zasobu; • Przeglądarka sprawdza zapisane w certyfikacie serwera flagi keyUsage, weryfikując czy został on poświadczony przez uprawniony podmiot; 1. Wstęp teoretyczny
klucz prywatny; • coś co masz (something you have) – token, karta kodów jednorazowych; • coś czym jesteś (something you are) – zabezpieczenia biometryczne, czyli rozpoznawanie twarzy, linii papilarnych, geometrii dłoni, brzmienia głosu, odczytywanie obrazu tęczówki oka; Stosowane metody 1. Wstęp teoretyczny
• Przyjazne dla natywnych aplikacji mobilnych oraz IoT; • Oddzielenie uwierzytelniania od autoryzacji; • Oddelegowanie procesu uwierzytelnienia do Identity Provider’a; • Skalowalność; • Ochrona przed CSRF (ale czy na pewno?); • Działają nawet, jeśli użytkownik zablokuje ciasteczka; 2. Tokeny – lekarstwo na wszystko?
przekazywanie między systemami i aplikacjami informacji o uprawnieniach użytkowników. • Opiera się na tokenach XML’owych; • Bardzo obszerne, dużo informacji; • Powszechnie przyjęty, większość infrastruktur firmowych go używa; • Nie ogranicza się do przesyłania tylko po HTTP, można używać SOAPa, JMSa; • Duży próg wejścia; • Dosyć trudno się go stosuje w przypadku aplikacji mobilnych; • Bardzo dobrze nadaje się do tworzenia federacji, czyli współdzielenia różnych zasobów bez dostępu do bazy danych; 3.1. SAML 2.0
naszej (resource owner) osi czasu (scope) na Facebooku (authorization server & resource server), żeby kontrolować czy w trakcie zwolnienia lekarskiego nie udostępniliśmy zdjęcia z wakacji 3.2. OAuth 2.0
server-side; • Implicit dla aplikacji mobilnych i aplikacji client- side; • Client Credentials do integracji systemów, aplikacja może robić coś sama (bez ingerencji użytkownika); • Resource Owner Credentials do logowania za pomocą loginu i hasła; 3.2. OAuth 2.0
(docelowa prośba o token) Authorization Server Response GET /callback ?authorization_code=540gjt340ijg34t45h56hhh POST https://fb.com/v2.0/dialog/oauth/get_token client_id=zwolnienielekarskie& client_secret=zwolnienielekarskie_generated_secret& redirect_uri=https://zwolnienielekarskie.pl/callback& grant_type=authorization_code& code=540gjt340ijg34t45h56hhh 3.2. OAuth 2.0
a web authorization protocol based on industry best practices. Oz combines the Hawk authentication protocol with the Iron encryption protocol. iron is a cryptographic utility for sealing a JSON object using symmetric key encryption with message integrity verification. Hawk is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial HTTP request cryptographic verification.
oparte o OAuth, ale rozszerzone o możliwość zarządzania tożsamością posiadacza tokena oraz zarządzanie sesją. Dzięki temu może być wykorzystywane w rozwiązaniach SSO. „Architektura rozproszonego uwierzytelnienia i dystrybucji tożsamości użytkowników w usługach webowych.” Identyfikacja i uwierzytelnianie Protokół bazowy 3.3. OpenID Connect
server-side; • Implicit dla natywnych aplikacji mobilnych i aplikacji client-side; • Hybrid dla specyficznych przypadków, gdy back- end i front-end chcą otrzymywać token niezależnie; 3.2. OpenID Connect
po sieci; • Oparty o bilety (ang. tickets), wykorzystujący zaawansowaną kryptografię; • Nie jest proste na pierwszy rzut oka; • Standardowy mechanizm uwierzytelniania w Windowsach od wersji 2000; • Wbudowany w Microsoft Active Directory; 3.4. Inne
biletu Kerberos’a, który został nadany użytkownikowi przy logowaniu do systemu operacyjnego; • Przeglądarka potrafi pobrać bilet i przesłać go w headerze HTTP; • Dostępne gotowe moduły Apache; • Natywne wsparcie w JDK od wersji 7; 3.4. Inne
weryfikuje URL serwisu, 2. a po poprawnej weryfikacji, wykonuje “w sobie” na tzw. “bezpiecznym elemencie”, uwierzytelnienie dzięki kryptografii asymetrycznej. U2F – Universal 2nd Factor
odpowiednio przemyśleć sposób uwierzytelniania i autoryzacji; • SAML jest dojrzałym standardem korporacyjnym, dzięki któremu można zaimplementować uwierzytelnianie oraz autoryzację; • OAuth 2.0 nie służy do uwierzytelniania tylko do delegowania autoryzacji, jego głównym założeniem jest oddzielenie uwierzytelniania od autoryzacji; • Sposób pozyskania tokena Resource Owner Credentials nie powinien być wykorzystywany NIGDY; • OpenID Connect jest rozszerzeniem OAuth, który przystosowany jest do tworzenia rozwiązań SSO i zarządzania sesją; • W zakresie bezpieczeństwa warto bazować na sprawdzonych, gotowych rozwiązaniach, tzn. zamiast pisać swój serwer autoryzacyjny, warto przetestować rozwiązania open-source typu Keycloak/Gluu;