此组件在服务器端组件中提供 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 删除现有应用程序。
如果服务器在颁发了一些令牌后重新启动,您可以在启动 OAuth2 服务器并注册应用程序之前,使用 AddToken 方法恢复这些令牌。
删除已颁发的令牌。
OAuth2Options 属性允许配置服务器端点和可选功能。
符合 RFC 7009 的令牌撤销。启用后,客户端可撤销之前颁发的访问令牌或刷新令牌。
按照 RFC 7662 进行令牌自省。启用后,资源服务器可查询授权服务器以确定令牌的活动状态和元数据。
设备授权授予方式,符合 RFC 8628。启用后,输入受限的设备可通过让用户在辅助设备上进行授权来请求授权。