我正在使用带有RAD Server的Delphi Tokyo 10.3 upd 1。我在RESTFull架构中的RAD Server中部署了一些资源/端点,并且运行良好,我可以使用REST从任何浏览器,Postman REST API工具以及我的Delphi VCL客户端应用程序访问所有资源。客户端库组件:TRESTClient,TRESTResquest和TRESTResponse,TRESTResponseDataSetAdapter。
现在,我需要更进一步,实现基本的安全级别。我正在尝试使用RAD Server身份验证机制。我将emsserver.ini Server.Keys 会话配置如下:
[Server.Keys]
MasterSecret=mysecret01
AppSecret=mysecret01
ApplicationID=mysecret01
并实现了以下用于调用资源/端点的代码:
procedure TFRMXTABRecurso.BTGETResourceAuthClick(Sender: TObject);
begin
Try
with DMREST do // Datamodule where REST Client components are
begin
FDMemXTabRec.CachedUpdates := false;
RstAdapter.Dataset := FDMemXTabRec; // my FDmemtable
RstRequest.ResetToDefaults;
RstClient.ResetToDefaults;
RstResponse.ResetToDefaults;
RstAdapter.ClearDataSet;
RstClient.BaseURL := 'http://localhost:8080/';
RstRequest.Method := rmGET;
RstRequest.Resource := 'XTABRECURSO';
try
Rstrequest.Params.Clear;
Rstrequest.AddParameter('X-Embarcadero-App-Secret', 'mysecret01', TRESTRequestParameterKind.pkHTTPHEADER);
Rstrequest.AddParameter('X-Embarcadero-Application-Id','mysecret01', TRESTRequestParameterKind.pkHTTPHEADER);
Rstrequest.AddParameter('X-Embarcadero-Master-Secret', 'mysecret01', TRESTRequestParameterKind.pkHTTPHEADER);
RstRequest.Execute;
except
on E: Exception do
begin
raise Exception.Create('Connection problem : ' + sLineBreak + E.QualifiedClassName + sLineBreak + E.Message);
end;
end;
end;
Finally
FDMemXTabRec.CachedUpdates := True;
End;
end;
当我运行时,我从RAD EMS开发服务器控制台中收到以下错误消息:
{"Error":{"Type":"HTTP","Code":"404","Reason":"Error","Error":"Not found","Description":"Request has unknown application id: mysecret01","Thread":13288}}
在查看Embarcadero文档和视频后,我仍然无法弄清这里是哪里错了!!! RestRequest是否缺少任何参数?
感谢您的帮助!