让我们使用 TsgcWebSocketHTTPServer 做一个简单的 OAuth2 服务器示例。
首先,创建一个新的 TsgcWebSocketHTTPServer,监听 443 端口,并使用 sgc.pem 文件中的自签名证书。
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
oServer.SSLOptions.Port := 443;
oServer.SSLOptions.CertFile := 'sgc.pem';
oServer.SSLOptions.KeyFile := 'sgc.pem';
oServer.SSLOptions.RootCertFile := 'sgc.pem';
oServer.SSL := True;
然后创建 TsgcHTTP_OAuth2_Server 的新实例,并将其分配给之前创建的服务器。
使用以下值注册新应用程序:
Name: MyApp
RedirectURI: http://127.0.0.1:8080
ClientId: client-id
ClientSecret: client-secret
OAuth2 := TsgcHTTP_OAuth2_Server.Create(nil);
OAuth2.Apps.AddApp('MyApp', 'http://127.0.0.1:8080', 'client-id', 'client-secret');
oServer.Authentication.Enabled := True;
oServer.Authentication.OAuth.OAuth2 := OAuth2;
然后处理 OAuth2 服务器组件的 OnOAuth2Authentication 事件,并实现您自己的用户登录方法。此处将使用 "user/secret" 这一组合来接受登录。
procedure OnAuth2Authentication(Connection: TsgcWSConnection; OAuth2: TsgcHTTPOAuth2Request; aUser,
aPassword: string; var Authenticated: Boolean);
begin
if ((aUser = 'user') and (aPassword = 'secret')) then
Authenticated := True;
end;
最后,启动服务器并使用 OAuth2 客户端登录,例如可以使用 sgcWebSockets 库中包含的 TsgcHTTP_OAuth2_Client。

请求新的访问令牌,将显示一个新的 Web 浏览器会话,用户必须允许连接然后登录。

如果登录成功,将向客户端返回新令牌。之后所有请求必须在 HTTP 头中包含此 Bearer 令牌。
