TsgcHTTP_OAuth2_Server

此组件在服务器端组件中提供 OAuth2 协议实现。

简介

此组件在服务器端组件中提供 OAuth2 协议实现。

服务器组件有一个名为 Authorization.OAuth.OAuth2 的属性,您可以在其中分配一个 TsgcHTTP_OAuth2_Server 实例,因此如果启用了 Authentication 且 OAuth2 属性附加了 OAuth2 服务器组件,则 WebSocket 和 HTTP 请求需要 Bearer 令牌才能被处理,否则连接将自动关闭。


    OAuth2 := TsgcHTTP_OAuth2_Server.Create(nil);
    Server.Authentication.Enabled := True;
    Server.Authentication.OAuth.OAuth2 := OAuth2;

服务器支持以下授权类型:

注册应用程序时可以自定义授权类型,默认情况下支持所有授权类型。

端点

默认情况下,组件配置以下端点来处理授权和令牌请求

Authorization:/sgc/oauth2/auth

Token: /sgc/oauth2/token

Revocation:/sgc/oauth2/revoke

自省: /sgc/oauth2/introspect

设备授权:/sgc/oauth2/device

设备验证:/sgc/oauth2/device/verify

因此,如果服务器在端口 443 上监听且域名为 www.esegece.com,则端点为:

Authorization: https://www.esegece.com/sgc/oauth2/auth

Token: https://www.esegece.com/sgc/oauth2/token

Revocation:https://www.esegece.com/sgc/oauth2/revoke

Introspection:https://www.esegece.com/sgc/oauth2/introspect

Device Authorization:https://www.esegece.com/sgc/oauth2/device

设备验证: https://www.esegece.com/sgc/oauth2/device/verify

端点可在 OAuth2Options 属性中配置。

默认情况下,启用了 PKCE(这是授权码流程的扩展,用于防止 CSRF 和授权码注入攻击)。

配置

在开始 OAuth2 流程之前,您必须注册将要使用的应用程序,这可通过 OAuth2 服务器组件的 Apps 属性完成。

注册应用程序

使用 Apps.AddApp 向 OAuth2 服务器添加新应用程序,必须设置以下参数:

您可以选择设置以下参数:

删除应用

使用 Apps.RemoveApp 删除现有应用程序。

AddToken

如果服务器在颁发了一些令牌后重新启动,您可以在启动 OAuth2 服务器并注册应用程序之前,使用 AddToken 方法恢复这些令牌。

RemoveToken

删除已颁发的令牌。

OAuth2Options

OAuth2Options 属性允许配置服务器端点和可选功能。

吊销

符合 RFC 7009 的令牌撤销。启用后,客户端可撤销之前颁发的访问令牌或刷新令牌。

自省

按照 RFC 7662 进行令牌自省。启用后,资源服务器可查询授权服务器以确定令牌的活动状态和元数据。

DeviceAuthorization

设备授权授予方式,符合 RFC 8628。启用后,输入受限的设备可通过让用户在辅助设备上进行授权来请求授权。

 

参考

指南