Bonjour,
je tente de réaliser une connexion au système Prosante Connect qui comme son grand frère France Connect est basé sur OpenId Connect en Delphi mais je n'y parviens pas...
J'ai essayé plusieurs choses comme via indy ou avec les composants Rest mais rien ne marche...

La meileure réponse que j'ai eu est celle-ci:
HTTP Response : Not Found (404)
<html><head></head><body><p style="font-size: 40px; font-weight: bold;">Sorry, we don't have any ressource about this</p></body></html>
voici mon dernier code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
procedure TForm1.Button2Click(Sender: TObject);
var
  Source: TStringStream;
  ReponseContent: TStringStream;
  ClientID, ClientSecret, Token, RedirectUri, Scope: string;
begin
  Memo1.Lines.Clear;
 
  ClientID    := 'monclientId';
  ClientSecret:= 'monsecretestbiengarde';
  RedirectUri := 'https://AdresseDemonSitePerso.fr';
  Scope       := 'openid';
 
  RESTClient.BaseURL := 'https://wallet.bas.psc.esante.gouv.fr/';
  try
    RESTRequest.Method := TRESTRequestMethod.rmPOST;
    RESTRequest.Resource := 'auth/realms/esante-wallet/protocol/openid-connect/token';
 
    RESTRequest.Params.AddItem('grant_type', 'client_credentials', TRESTRequestParameterKind.pkGETorPOST);
    RESTRequest.Params.AddItem('response_type', 'token', TRESTRequestParameterKind.pkGETorPOST);
 
    RESTRequest.Params.AddItem('client_id', ClientID, TRESTRequestParameterKind.pkGETorPOST);
    RESTRequest.Params.AddItem('client_secret', ClientSecret, TRESTRequestParameterKind.pkGETorPOST);
    RESTRequest.AddParameter('redirect_uri', RedirectUri, TRESTRequestParameterKind.pkGETorPOST);
    RESTRequest.Params.AddItem('scope', Scope, TRESTRequestParameterKind.pkGETorPOST);
 
    RESTRequest.Execute;
 
    if RESTRequest.Response.StatusCode = 200 then
    begin
      if RESTRequest.Response.GetSimpleValue('access_token', Token) then
      begin
        Memo1.Lines.add('access_token');
        Memo1.Lines.add(Token);
      end;
    end
    else
    begin
        Memo1.Lines.add(Format('HTTP Response : %s (%d)', [RESTRequest.Response.StatusText, RESTRequest.Response.StatusCode]));
        Memo1.Lines.add(RESTRequest.Response.Content);
    end;
  except
    on E: Exception do
      Memo1.Lines.add('General Error ' +  E.Message);
    on EHTTP: EHTTPProtocolException do
      Memo1.Lines.add('HTTP Error ' +  EHTTP.Message);
    on EREST: ERESTException do
      Memo1.Lines.add('REST Error ' +  EREST.Message);
  end;
end;