Znalazłem to w innym SO wątek:
Kroki:
- Użytkownik łączy się z witryną obsługującą OpenID.
- Użytkownik wprowadza dane uwierzytelniające.
- POST jest wykonywany za pomocą BASE64 (strona internetowa do dostawcy)
- Odpowiedź została zbudowana (zawiera datę ważności)
- Witryna przekierowuje użytkownika do dostawcy w celu zalogowania.
- Użytkownik wprowadza hasło i przesyła.
- Weryfikacja jest zakończona.
- Zaloguj sie!
Jak zabezpieczone są kroki 6-8? Z mojego punktu widzenia klient uwierzytelnia się z dostawcą i przekazuje wyniki do naszego serwera.
Co powstrzymuje klienta przed sfałszowaniem wyniku uwierzytelnienia?
Odpowiedzi:
2 dla odpowiedzi № 1Wynik uwierzytelnienia jest przede wszystkim podpisany kryptograficznie przez dostawcę. Istnieją również inne środki bezpieczeństwa chroniące przed innymi atakami.
Cytując Specyfikacja OpenID 2.0, sekcja 11.:
Gdy strona ufająca otrzyma pozytywne stwierdzenie, MUSI zweryfikować następujące kwestie przed zaakceptowaniem twierdzenia:
- Wartość „openid.return_to” odpowiada adresowi URL bieżącego żądania (Sekcja 11.1)
- Odkryte informacje są zgodne z informacjami zawartymi w stwierdzeniu (Sekcja 11.2)
- Asercja nie została jeszcze zaakceptowana z tego PO o tej samej wartości dla „openid.response_nonce” (Sekcja 11.3)
- Podpis na potwierdzeniu jest prawidłowy, a wszystkie pola, które wymagają podpisu, są podpisane (Sekcja 11.4)
Klient może oczywiście wysłać fałszywy wynik uwierzytelnienia, ale nie przejdzie weryfikacji.