HTTP/2 客户端支持 2 种身份验证类型:Basic 身份验证和 OAuth2 身份验证。
使用 OnHTTP2Authorization 事件处理两种类型的身份验证。
如果服务器返回请求基本认证的标头,请在 OnHTTP2Authorization 中设置用户名和密码。
oClient := TsgcHTTP2Client.Create(nil);
oClient.OnHTTP2Authorization := OnHTTP2AuthorizationEvent;
...
procedure OnHTTP2AuthorizationEvent(Sender: TObject; const Connection: TsgcHTTP2ConnectionClient; const AuthType, AuthData: string; var UserName, Password, aToken: string; var Handled: Boolean);
begin
if AuthType = 'Basic' then
begin
UserName := 'user';
Password := 'secret';
end;
end;
如果服务器返回请求 Bearer 令牌身份验证的头部,请在 OnHTTP2Authorization 中设置令牌。
oClient := TsgcHTTP2Client.Create(nil);
oClient.OnHTTP2Authorization := OnHTTP2AuthorizationEvent;
...
procedure OnHTTP2AuthorizationEvent(Sender: TObject; const Connection: TsgcHTTP2ConnectionClient; const AuthType, AuthData: string; var UserName, Password, aToken: string; var Handled: Boolean);
begin
if AuthType = 'Bearer' then
begin
aToken := 'bearer token';
end;
end;
如果您已经知道 Bearer 值(因为您通过其他方式获得了它),可以使用请求的以下属性将 Bearer 值作为 HTTP 标头传递,只需在调用任何 HTTP 请求方法之前设置:
TsgcHTTP2Client.Request.BearerAuthentication = trueTsgcHTTP2Client.Request.BearerToken = "< value of the token >"
如果您想将 OAuth2 组件与 HTTP/2 客户端配合使用,请阅读以下文章。