如何为RAD服务器身份验证调用配置TRESTRequest?

时间:2019-07-29 23:02:13

标签: rest delphi

我正在使用带有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是否缺少任何参数?

感谢您的帮助!

0 个答案:

没有答案