OAuth2 permite que aplicaciones de terceros obtengan acceso a recursos restringidos usando el protocolo HTTP. La RFC 6749 cubre la especificación OAuth2. Hay 4 roles:
- Cliente
- Propietario del recurso
- Servidor de autorización
- Servidor de recursos
Flujo OAuth2
(A) El cliente solicita autorización al propietario del recurso. La solicitud de autorización puede realizarse directamente al propietario del recurso (como se muestra) o, preferiblemente, de forma indirecta a través del servidor de autorización como intermediario.
(B) El cliente recibe un authorization grant, que es una credencial que representa la autorización del propietario del recurso, expresada usando uno de los cuatro grant types definidos en esta especificación o usando un grant type de extensión. El tipo de authorization grant depende del método usado por el cliente para solicitar autorización y los tipos admitidos por el servidor de autorización.(C) El cliente solicita un access token autenticándose con el servidor de autorización y presentando el authorization grant.
(D) El servidor de autorización autentica al cliente y valida el authorization grant; si es válido, emite un access token.
(E) El cliente solicita el recurso protegido al servidor de recursos y se autentica presentando el access token.
(F) El servidor de recursos valida el access token y, si es válido, atiende la petición.

OAuth2 WebSockets
sgcWebSockets admite tokens Bearer en el componente cliente WebSocket. Solo tienes que activar la propiedad Authentication y Token en TsgcWebSocketClient y establecer qué token se enviará cuando el cliente se conecte al servidor.
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>';
En la próxima versión, sgcWebSockets 4.3.4, se lanzará un nuevo componente para OAuth2 que podrá obtener las credenciales OAuth2 automáticamente.
