You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi Sydney REST服务器中实现Authorization: Bearer <Token>授权

Delphi Sydney REST服务器处理Bearer授权头配置方案

问题原因

Indy的TIdHTTPServer默认会自动解析Authorization请求头,当遇到未内置支持的认证方案(比如Bearer)时,会抛出异常。解决核心是通过绑定OnParseAuthentication事件,自定义处理该认证类型。

配置步骤

1. 定位Indy服务器实例

如果你的REST服务器是基于TIdHTTPWebBrokerBridge搭建的,直接访问其Server属性即可获取底层的TIdHTTPServer实例。

2. 绑定事件处理过程

在服务器初始化阶段(比如窗体的OnCreate事件、服务启动前的初始化代码中),为OnParseAuthentication事件赋值:

IdHTTPWebBrokerBridge1.Server.OnParseAuthentication := IdHTTPServerParseAuthentication;

3. 实现事件处理逻辑

编写事件处理过程,识别Bearer认证类型并标记为已处理,避免Indy抛出异常。同时可在此提前解析Token:

procedure TMainForm.IdHTTPServerParseAuthentication(AContext: TIdContext;
  const AAuthType, AAuthData: string; var VHandled: Boolean);
begin
  if SameText(AAuthType, 'Bearer') then
  begin
    // 可选:在此解析AAuthData中的Token,存入上下文供后续请求处理使用
    // 示例:AContext.Data := TAuthToken.Create(AAuthData);
    VHandled := True; // 告知Indy该认证类型已被处理,无需默认逻辑
  end;
end;

4. 在业务逻辑中获取Token

后续处理REST请求时,可通过以下方式获取Token:

  • 直接从请求头读取:Request.RawHeaders.Values['Authorization'],自行拆分出Bearer后的Token字符串
  • 从之前事件处理中存入上下文的对象中读取(如果做了提前解析)

注意事项

  • 事件绑定必须在服务器启动前完成,否则无法生效
  • 无需修改Indy源码,通过事件扩展即可兼容自定义认证方案

内容的提问来源于stack exchange,提问作者Pieter van Wyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:42:30