OAuth2 は、HTTP プロトコルを使用してサードパーティアプリケーションが制限されたリソースにアクセスできるようにするプロトコルです。RFC 6749 が OAuth2 仕様を規定しています。4 つのロールがあります。
- クライアント
- リソースオーナー
- 認可サーバー
- リソースサーバー
OAuth2 フロー
(A) クライアントがリソースオーナーに認可を要求します。認可リクエストはリソースオーナーに直接行うか(図示のとおり)、認可サーバーを仲介として間接的に行うことが望ましいです。
(B) クライアントは認可グラントを受け取ります。これはリソースオーナーの認可を表す資格情報で、この仕様で定義された 4 つのグラントタイプのいずれか、または拡張グラントタイプを使用して表現されます。認可グラントタイプは、クライアントが認可を要求するために使用する方法と、認可サーバーがサポートするタイプによって異なります。(C) クライアントは認可サーバーで認証し、認可グラントを提示することでアクセストークンを要求します。
(D) 認可サーバーはクライアントを認証し、認可グラントを検証します。有効であればアクセストークンを発行します。
(E) クライアントはリソースサーバーに保護されたリソースを要求し、アクセストークンを提示して認証します。
(F) リソースサーバーはアクセストークンを検証し、有効であればリクエストを処理します。

OAuth2 と WebSocket
sgcWebSockets は WebSocket クライアントコンポーネントで Bearer トークンをサポートしています。TsgcWebSocketClient の Authentication と Token プロパティを有効にし、クライアントがサーバーに接続するときに送信するトークンを設定するだけです。
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>';
次のバージョン sgcWebSockets 4.3.4 では OAuth2 用の新しいコンポーネントがリリースされ、OAuth2 資格情報を自動的に取得できるようになります。
