O OAuth2 permite que aplicações de terceiros acessem recursos restritos usando o protocolo HTTP. A RFC 6749 cobre a especificação do OAuth2. Existem 4 papéis:
- Cliente
- Proprietário do Recurso
- Servidor de Autorização
- Servidor de Recursos
Fluxo OAuth2
(A) O cliente solicita autorização ao proprietário do recurso. A solicitação de autorização pode ser feita diretamente ao proprietário do recurso (como mostrado), ou preferencialmente de forma indireta via servidor de autorização como intermediário.
(B) O cliente recebe uma concessão de autorização, que é uma credencial representando a autorização do proprietário do recurso, expressa usando um dos quatro tipos de concessão definidos nesta especificação ou usando um tipo de concessão de extensão. O tipo de concessão de autorização depende do método usado pelo cliente para solicitar autorização e dos tipos suportados pelo servidor de autorização.
(C) O cliente solicita um token de acesso autenticando-se com o servidor de autorização e apresentando a concessão de autorização.
(D) O servidor de autorização autentica o cliente e valida a concessão de autorização e, se válida, emite um token de acesso.
(E) O cliente solicita o recurso protegido ao servidor de recursos e se autentica apresentando o token de acesso.
(F) O servidor de recursos valida o token de acesso e, se válido, atende à solicitação.

OAuth2 WebSockets
O sgcWebSockets oferece suporte a tokens Bearer no componente cliente WebSocket. Você só precisa habilitar a propriedade Authentication e Token no TsgcWebSocketClient e definir qual token será enviado quando o cliente se conectar ao 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>';
Na próxima versão, sgcWebSockets 4.3.4, um novo componente para OAuth2 será lançado e será capaz de obter credenciais OAuth2 automaticamente.
