OAuth2 allows to third-party applications to get access to restricted resources using HTTP protocol. RFC 6749 covers OAuth2 specification. There are 4 roles:
- Klient
- Właściciel zasobu
- Serwer autoryzacji
- Serwer zasobów
OAuth2 Flow
(A) Klient żąda autoryzacji od właściciela zasobu. Żądanie autoryzacji może być skierowane bezpośrednio do właściciela zasobu (jak pokazano) lub pośrednio za pośrednictwem serwera autoryzacji jako pośrednika.
(B) Klient otrzymuje grant autoryzacji, czyli poświadczenie reprezentujące autoryzację właściciela zasobu, wyrażone w jednym z czterech typów grantu zdefiniowanych w tej specyfikacji lub przy użyciu rozszerzonego typu grantu. Typ grantu autoryzacji zależy od metody używanej przez klienta do żądania autoryzacji oraz typów obsługiwanych przez serwer autoryzacji.
(C) Klient żąda tokenu dostępu, uwierzytelniając się na serwerze autoryzacji i przedstawiając grant autoryzacji.
(D) Serwer autoryzacji uwierzytelnia klienta i weryfikuje grant autoryzacji, a jeśli jest prawidłowy, wydaje token dostępu.
(E) Klient żąda chronionego zasobu z serwera zasobów i uwierzytelnia się, przedstawiając token dostępu.
(F) Serwer zasobów weryfikuje token dostępu, a jeśli jest prawidłowy, obsługuje żądanie.

OAuth2 WebSockets
sgcWebSockets obsługuje tokeny Bearer w komponencie klienta WebSocket. Wystarczy włączyć właściwości Authentication i Token w TsgcWebSocketClient i ustawić, który token będzie wysyłany podczas łączenia klienta z serwerem.
Client := TsgcWebSocketClient.Create(nil); Client.Authentication.Enabled := True; Client.Authentication.Token.Enabled := True; Client.Authentication.Token.AuthName := 'Bearer'; Client.Authentication.Token.AuthToken := '<your token here>';
W kolejnej wersji, sgcWebSockets 4.3.4, zostanie wydany nowy komponent dla OAuth2, który będzie potrafił automatycznie pobierać poświadczenia OAuth2.
