AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy und OAuth / Microsoft365

Indy und OAuth / Microsoft365

Ein Thema von friedt99 · begonnen am 5. Sep 2023 · letzter Beitrag vom 7. Sep 2023
Antwort Antwort
Seite 1 von 2  1 2   
friedt99

Registriert seit: 17. Mär 2010
46 Beiträge
 
#1

Indy und OAuth / Microsoft365

  Alt 5. Sep 2023, 13:07
Hallo Zusammen,

ich versuche mich an microsoft365 und SMTP mit OAuth.
Habe nach diversen Anleitungen eine App dort angelegt und entsprechende Rechte eingerichtet.

Aktuell beziehe ich einen Token über eine Komponenten von https://www.esegece.com/websockets,
das klappt soweit.

Was nicht klappt ist der Indy SMTP Teil. Hier die Funktion mit der per OAuth eine Mail gesendet werden soll.

Delphi-Quellcode:
procedure TForm1.SendSMTP(ptToken:String);
Var lcSMTP:TIdSMTP;
    lcMail:TIdMessage;
    lcRec:TIdEMailAddressItem;
    ltAuth:String;
    lcAuthSASL:TIdSASLListEntry;
    lcIdSSLIOHandlerSocketSMTP:TidSSLIOHandlerSocketOpenSSL;
    lcUserPass:TIdUserPassProvider;
    lcDebug:TIdLogDebug;
begin
  lcSMTP:=TIdSMTP.Create;
  Try
    lcSMTP.Host:='smtp.office365.com';
    lcSMTP.Port:=587;

    lcMail:=TIdMessage.Create(lcSMTP);
    Try
      lcMail.Encoding:=meMime;
      lcRec:=lcMail.Recipients.Add;
      lcRec.Address:='XXX@YYY.de';
      lcRec.Name:='XXX@YYY.de';

      lcMail.Subject:='Test';
      lcMail.Body.Text:='Testnachricht via OAuth';

      lcIdSSLIOHandlerSocketSMTP:=TidSSLIOHandlerSocketOpenSSL.Create(lcSMTP);
      lcIdSSLIOHandlerSocketSMTP.SSLOptions.SSLVersions:=[sslvTLSv1_2];

      lcUserPass:=TIdUserPassProvider.Create(lcSMTP);
      lcUserPass.Username:='myname@test.onmicrosoft.com';
      lcUserPass.Password:=ptToken;

      lcAuthSASL:=lcSMTP.SASLMechanisms.Add;
      lcAuthSASL.SASL:=TIdSASLXOAuth2.Create(lcSMTP);
      TIdSASLXOAuth2(lcAuthSASL.SASL).UserPassProvider:=lcUserPass;

      lcDebug:=TIdLogDebug.Create(lcSMTP);
      lcDebug.OnReceive:=DoAddLogReceive;
      lcDebug.OnSend:=DoAddLogSend;

      lcSMTP.Intercept:=lcDebug;
      lcSMTP.AuthType:=satSASL;
      lcSMTP.Connect;

      --------------------------------------
      - hier wird eine Exception ausgelöst -
      --------------------------------------
      lcSMTP.Authenticate;

      lcSMTP.Send(lcMail);
    Finally
      lcMail.Free;
    End;
    lcSMTP.Disconnect;
  Finally
    lcSMTP.Free;
  End;
end;
Der Token sieht wie folgt aus (gekürzt)

Code:
{"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"eyJ0eXAiOiJKV1Q...iLCJub}
Über IdLogDebug kommen folgende Ausgaben:

Zitat:
<- 220 FR3P281CA0153.outlook.office365.com Microsoft ESMTP MAIL Service ready at Tue, 5 Sep 2023 10:40:17 +0000

-> EHLO VM054

<- 250-FR3P281CA0153.outlook.office365.com Hello [91.66.249.39]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8

Error Access Token: invalid_request Doesn't support AUTH or the specified SASL handlers!!
Auslöser ist, das bei der Rückmeldung nach dem EHLO der Wert "XOAUTH" fehlt.

Aber was kann der Grund dafür sein ? Ist der Token nicht korrekt ? Nutze ich Indy an der Stelle falsch ?

Vielen Dank für eure Hilfe.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Indy und OAuth / Microsoft365

  Alt 5. Sep 2023, 16:56
Funktioniert es denn z.B. mit Telnet?

Mit der Kombination Telnet + OpenSSL habe ich es bishe rnoch nicht zu tun gehabt, aber es ist anscheinend möglich:

https://www.stevenrombauts.be/2018/1...et-or-openssl/

https://stackoverflow.com/a/27030820/80901

Alternativ geht es eventuell mit einem einfachen Client in einer anderen gängigen Programmiersprache, z.B. Python:

https://stackoverflow.com/a/4264375/80901

Zitat:
smtp_conn = smtplib.SMTP('smtp.googlemail.com', 587)
#smtp_conn.set_debuglevel(True)
smtp_conn.ehlo()
smtp_conn.starttls()
smtp_conn.ehlo()
smtp_conn.docmd('AUTH', 'XOAUTH ' + base64.b64encode(xoauth_string))
Michael Justin

Geändert von mjustin ( 5. Sep 2023 um 18:03 Uhr)
  Mit Zitat antworten Zitat
friedt99

Registriert seit: 17. Mär 2010
46 Beiträge
 
#3

AW: Indy und OAuth / Microsoft365

  Alt 5. Sep 2023, 20:00
Habe nochmal etwas gefunden und bin jetzt einen Schritt weiter.

Delphi-Quellcode:
procedure SendSMTP(ptToken:String);
Var lcSMTP:TIdSMTP;
    lcMail:TIdMessage;
    lcRec:TIdEMailAddressItem;
    lcAuthSASL:TIdSASLListEntry;
    lcProvider:TProviderInfo;
    lcIdSSLIOHandlerSocketSMTP:TidSSLIOHandlerSocketOpenSSL;
    lcUserPass:TIdUserPassProvider;
    lcDebug:TIdLogDebug;
begin
  ctToken:=ptToken;
  lcSMTP:=TIdSMTP.Create;
  Try
    lcSMTP.Host:='smtp.office365.com';
    lcSMTP.Port:=587;

    lcMail:=TIdMessage.Create(lcSMTP);
    Try
      lcMail.Encoding:=meMime;
      lcRec:=lcMail.Recipients.Add;
      lcRec.Address:='xxx@yyy.de';
      lcRec.Name:='xxx@yyy.de';

      lcMail.Subject:='Test';
      lcMail.Body.Text:='Testnachricht via OAuth';


      lcIdSSLIOHandlerSocketSMTP:=TidSSLIOHandlerSocketOpenSSL.Create(lcSMTP);
      lcIdSSLIOHandlerSocketSMTP.SSLOptions.SSLVersions:=[sslvTLSv1_2];

      lcUserPass:=TIdUserPassProvider.Create(lcSMTP);
      lcUserPass.Username:='MyMail@test.onmicrosoft.com';
      lcUserPass.Password:=ptToken;

      lcAuthSASL:=lcSMTP.SASLMechanisms.Add;
      lcAuthSASL.SASL:=TIdSASLXOAuth2.Create(lcSMTP);
      TIdSASLXOAuth2(lcAuthSASL.SASL).UserPassProvider:=lcUserPass;

      lcDebug:=TIdLogDebug.Create(lcSMTP);
      lcDebug.OnReceive:=DoAddLogReceive;
      lcDebug.OnSend:=DoAddLogSend;

      lcSMTP.Intercept:=lcDebug;
      lcSMTP.IOHandler:=lcIdSSLIOHandlerSocketSMTP;

      lcSMTP.UseTLS:=utUseExplicitTLS;
      lcSMTP.AuthType:=satSASL;
      lcSMTP.Connect;

      lcSMTP.Authenticate;
      lcSMTP.Send(lcMail);
    Finally
      lcMail.Free;
    End;
    lcSMTP.Disconnect;
  Finally
    lcSMTP.Free;
  End;
end;
Damit bekomme ich folgende Log Einträge:

Zitat:
After Access Token: {"token_type":"Bearer","expires_in":3599,"ext_expi res_in":3599,"access_token":"eyJ0eXAiOiJKV1QiLCJub 25jZSI6IjMyUGUxM3BFZXhCOE1mYklyR1RKWVllQUJ5UjdxZmR vZDh2b2c3eV9PaUEiLCJhbGciOiJSUzI1NiIsIng1dCI6Ii1LS TNROW5OUjdiUm9meG1lWm9YcWJIWkdldyIsImtpZCI6Ii1LSTN ROW5OUjdiUm9meG1lWm9YcWJIWkdldyJ9.eyJhdWQiOiJodHRw czovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwcz ovL3N0cy53aW5kb3dzLm5ldC82M2ZkZmJmMS1jYmE1LTQyNDgt YWMxZC00NDZkMDFhMGJiNGQvIiwiaWF0IjoxNjkzOTM2MTkxLC JuYmYiOjE2OTM5MzYxOTEsImV4cCI6MTY5Mzk0MDA5MSwiYWlv IjoiRTJGZ1lPaFFLTkVJVzd0ejBjbVQwYysrTEJXV0JRQT0iLC JhcHBfZGlzcGxheW5hbWUiOiJMb2dvU0lTIiwiYXBwaWQiOiJi MGM4MmZiYi03YzU0LTQwZDYtOTRkZi02MmM1NmUyOWM2YTUiLC JhcHBpZGFjciI6IjEiLCJpZHAiOiJodHRwczovL3N0cy53aW5k b3dzLm5ldC82M2ZkZmJmMS1jYmE1LTQyNDgtYWMxZC00NDZkMD FhMGJiNGQvIiwiaWR0eXAiOiJhcHAiLCJvaWQiOiJjYmJkODM0 Mi1iOWFjLTQ2OWUtOGM4Ni01YzFiYjY1OTJhZTYiLCJyaCI6Ij AuQWE0QThmdjlZNlhMU0VLc0hVUnRBYUM3VFFNQUFBQUFBQUFB d0FBQUFBQUFBQUN1QUFBLiIsInJvbGVzIjpbIlVzZXIuUmVhZC 5BbGwiLCJNYWlsLlNlbmQiXSwic3ViIjoiY2JiZDgzNDItYjlh Yy00NjllLThjODYtNWMxYmI2NTkyYWU2IiwidGVuYW50X3JlZ2 lvbl9zY29wZSI6IkVVIiwidGlkIjoiNjNmZGZiZjEtY2JhNS00 MjQ4LWFjMWQtNDQ2ZDAxYTBiYjRkIiwidXRpIjoiaFpQT0lZeU 9KVW1TU2hyWGhXSWhBQSIsInZlciI6IjEuMCIsIndpZHMiOlsi MDk5N2ExZDAtMGQxZC00YWNiLWI0MDgtZDVjYTczMTIxZTkwIl 0sInhtc190Y2R0IjoxNjkzNzU3MjM0LCJ4bXNfdGRiciI6IkVV In0.rWcKMQEYBxmloeMQ1ihVa8gLNjOTLS2_M9JpqHuMUVvdD7 E0ahECNlDnLG99nY97M8Kyvroismvn05TvgRGzKaFGzFZ4GdTX mNEAAiJ8SC_5Mcg4pGdt_34z30qQItN1j4StwNwfqV746m6EsI oY3evEBkiByw9wt98465TqSP3SCPfeOXyBlnOjNhcFw2b07Vq8 xXNxgEDeUkliuPmOpXD03SjhhLana0OaL30JJb3BvXpgg5yAwu YUKsv9ei20MlxHqZAg_pxlCrJz3-VTPVpgDlL5Fmy4GT9LX5h6pBXCZJ613AJlASEHtSGJiyrktEdn f2NrWS8c1lKbtGsNAA"}
<- 220 FR0P281CA0199.outlook.office365.com Microsoft ESMTP MAIL Service ready at Tue, 5 Sep 2023 17:54:51 +0000

-> EHLO VM054

<- 250-FR0P281CA0199.outlook.office365.com Hello [92.74.135.193]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8

-> STARTTLS

<- 220 2.0.0 SMTP server ready

-> EHLO VM054

<- 250-FR0P281CA0199.outlook.office365.com Hello [92.74.135.193]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-AUTH LOGIN XOAUTH2
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8

-> AUTH XOAUTH2 dXNlcj1UaG9tYXNGcmllZG1hbm5AbG9nb3Npcy5vbm1pY3Jvc2 9mdC5jb20BYXV0aD1CZWFyZXIgZXlKMGVYQWlPaUpLVjFRaUxD SnViMjVqWlNJNklqTXlVR1V4TTNCRlpYaENPRTFtWWtseVIxUk tXVmxsUVVKNVVqZHhabVJ2WkRoMmIyYzNlVjlQYVVFaUxDSmhi R2NpT2lKU1V6STFOaUlzSW5nMWRDSTZJaTFMU1ROUk9XNU9Vam RpVW05bWVHMWxXbTlZY1dKSVdrZGxkeUlzSW10cFpDSTZJaTFM U1ROUk9XNU9VamRpVW05bWVHMWxXbTlZY1dKSVdrZGxkeUo5Lm V5SmhkV1FpT2lKb2RIUndjem92TDJkeVlYQm9MbTFwWTNKdmMy OW1kQzVqYjIwaUxDSnBjM01pT2lKb2RIUndjem92TDNOMGN5NT NhVzVrYjNkekxtNWxkQzgyTTJaa1ptSm1NUzFqWW1FMUxUUXlO RGd0WVdNeFpDMDBORFprTURGaE1HSmlOR1F2SWl3aWFXRjBJam 94Tmprek9UTTJNVGt4TENKdVltWWlPakUyT1RNNU16WXhPVEVz SW1WNGNDSTZNVFk1TXprME1EQTVNU3dpWVdsdklqb2lSVEpHWj FsUGFGRkxUa1ZKVnpkMGVqQmpiVlF3WXlzclRFSlhWMEpSUVQw aUxDSmhjSEJmWkdsemNHeGhlVzVoYldVaU9pSk1iMmR2VTBsVE lpd2lZWEJ3YVdRaU9pSmlNR000TW1aaVlpMDNZelUwTFRRd1pE WXRPVFJrWmkwMk1tTTFObVV5T1dNMllUVWlMQ0poY0hCcFpHRm pjaUk2SWpFaUxDSnBaSEFpT2lKb2RIUndjem92TDNOMGN5NTNh VzVrYjNkekxtNWxkQzgyTTJaa1ptSm1NUzFqWW1FMUxUUXlORG d0WVdNeFpDMDBORFprTURGaE1HSmlOR1F2SWl3aWFXUjBlWEFp T2lKaGNIQWlMQ0p2YVdRaU9pSmpZbUprT0RNME1pMWlPV0ZqTF RRMk9XVXRPR000TmkwMVl6RmlZalkxT1RKaFpUWWlMQ0p5YUNJ NklqQXVRV0UwUVRobWRqbFpObGhNVTBWTGMwaFZVblJCWVVNM1 ZGRk5RVUZCUVVGQlFVRkJkMEZCUVVGQlFVRkJRVU4xUVVGQkxp SXNJbkp2YkdWeklqcGJJbFZ6WlhJdVVtVmhaQzVCYkd3aUxDSk 5ZV2xzTGxObGJtUWlYU3dpYzNWaUlqb2lZMkppWkRnek5ESXRZ amxoWXkwME5qbGxMVGhqT0RZdE5XTXhZbUkyTlRreVlXVTJJaX dpZEdWdVlXNTBYM0psWjJsdmJsOXpZMjl3WlNJNklrVlZJaXdp ZEdsa0lqb2lOak5tWkdaaVpqRXRZMkpoTlMwME1qUTRMV0ZqTV dRdE5EUTJaREF4WVRCaVlqUmtJaXdpZFhScElqb2lhRnBRVDBs WmVVOUtWVzFUVTJoeVdHaFhTV2hCUVNJc0luWmxjaUk2SWpFdU 1DSXNJbmRwWkhNaU9sc2lNRGs1TjJFeFpEQXRNR1F4WkMwMFlX TmlMV0kwTURndFpEVmpZVGN6TVRJeFpUa3dJbDBzSW5odGMxOT BZMlIwSWpveE5qa3pOelUzTWpNMExDSjRiWE5mZEdSaWNpSTZJ a1ZWSW4wLnJXY0tNUUVZQnhtbG9lTVExaWhWYThnTE5qT1RMUz JfTTlKcHFIdU1VVnZkRDdFMGFoRUNObERuTEc5OW5ZOTdNOEt5 dnJvaXNtdm4wNVR2Z1JHekthRkd6Rlo0R2RUWG1ORUFBaUo4U0 NfNU1jZzRwR2R0XzM0ejMwcVFJdE4xajRTdHdOd2ZxVjc0Nm02 RXNJb1kzZXZFQmtpQnl3OXd0OTg0NjVUcVNQM1NDUGZlT1h5Qm xuT2pOaGNGdzJiMDdWcTh4WE54Z0VEZVVrbGl1UG1PcFhEMDNT amhoTGFuYTBPYUwzMEpKYjNCdlhwZ2c1eUF3dVlVS3N2OWVpMj BNbHhIcVpBZ19weGxDckp6My1WVFBWcGdEbEw1Rm15NEdUOUxY NWg2cEJYQ1pKNjEzQUpsQVNFSHRTR0ppeXJrdEVkbmYyTnJXUz hjMWxLYnRHc05BQQEB

<- 535 5.7.3 Authentication unsuccessful [FR0P281CA0199.DEUP281.PROD.OUTLOOK.COM 2023-09-05T17:55:02.989Z 08DBAE3606E6E73B]

Error Access Token: invalid_request Authentication unsuccessful [FR0P281CA0199.DEUP281.PROD.OUTLOOK.COM 2023-09-05T17:55:02.989Z 08DBAE3606E6E73B]
Allerdings immer noch nicht erfolgreich angemeldet. Im Azure Portal ist die Anwendung mit den entsprechenden Rechten (nach diversen Anleitungen)
eingerichtet, der SMTP Zugriff auf das Postfach ist erlaubt.

Hat noch jemand eine Idee ?
  Mit Zitat antworten Zitat
Thomasl

Registriert seit: 19. Jun 2006
Ort: Vreden
67 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Indy und OAuth / Microsoft365

  Alt 5. Sep 2023, 22:40
Ich kann morgen mal schauen wie ich es mache.
Habe den Laptop gerade nicht hier.

Aber dem Benutzer wurde die Rechte gegeben per SMTP zu Senden?
Das ist beim Account bei der Arbeit default aus gewesen.
Und beim Privaten Live/Hotmail war das schon erlaubt
Thomas Levering
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
736 Beiträge
 
#5

AW: Indy und OAuth / Microsoft365

  Alt 5. Sep 2023, 22:41
Der Token sieht wie folgt aus (gekürzt)

Code:
{"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"eyJ0eXAiOiJKV1Q...iLCJub}

Ist das bei dir "ptToken"? Bin mir nicht sicher, aber probiere Mal:
Code:
Bearer eyJ0eXAiOiJKV1Q...iLCJub

Geändert von Olli73 ( 5. Sep 2023 um 22:45 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Indy und OAuth / Microsoft365

  Alt 6. Sep 2023, 09:11
Hat noch jemand eine Idee ?
Welche Scopes werden für das OAuth Token angefragt?

Ich würde es gerne testen, habe aber meine 30 Tage für kostenlose Tests bereits aufgebraucht. Benötigt der Versand einen (virtuellen) MS Exchange Server?
Michael Justin

Geändert von mjustin ( 6. Sep 2023 um 09:20 Uhr)
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#7

AW: Indy und OAuth / Microsoft365

  Alt 6. Sep 2023, 10:16
Was Olli schreibt: du sendest nicht das Token, sondern du sendest die gesamte Antwort, also das gesamte JSON, des Authentifizierungsdienstes. Das Access-Token, das du senden musst, ist nur das, was in der Eigenschaft "access_token" steht.
  Mit Zitat antworten Zitat
Thomasl

Registriert seit: 19. Jun 2006
Ort: Vreden
67 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Indy und OAuth / Microsoft365

  Alt 6. Sep 2023, 10:24
ist die TIdSASLXOAuth2 in Indy10\Protocols mitlerweile schon enthalten?

diese geht
Delphi-Quellcode:
unit IdSASLXOAUTH;

interface

uses
  Classes,
  IdSASL
  ;

type
  TIdSASLXOAuth = class(TIdSASL)
  private
    FToken: string;
    FUser: string;
    FTwoLinePopFormat: Boolean;
  public
    property Token: string read FToken write FToken;
    property User: string read FUser write FUser;
    property TwoLinePopFormat: Boolean read FTwoLinePopFormat write FTwoLinePopFormat;
    class function ServiceName: TIdSASLServiceName; override;
    constructor Create(AOwner: TComponent);
    destructor Destroy; override;
    function TryStartAuthenticate(const AHost, AProtocolName : String; var VInitialResponse: String): Boolean; override;
    function ContinueAuthenticate(const ALastResponse, AHost, AProtocolName : string): string; override;
    function StartAuthenticate(const AChallenge, AHost, AProtocolName: string): string; override;
    { For cleaning up after Authentication }
    procedure FinishAuthenticate; override;
  end;

implementation

{ TIdSASLXOAuth }

class function TIdSASLXOAuth.ServiceName: TIdSASLServiceName;
begin
  Result := 'XOAUTH2';
end;

constructor TIdSASLXOAuth.Create(AOwner: TComponent);
begin
  inherited;
end;

destructor TIdSASLXOAuth.Destroy;
begin
  inherited;
end;

function TIdSASLXOAuth.TryStartAuthenticate(const AHost, AProtocolName: String; var VInitialResponse: String): Boolean;
begin
  if (AProtocolName = 'pop') and FTwoLinePopFormat then
  begin
    // Don't send anything yet
  end
  else
  begin
    VInitialResponse := 'user=' + FUser + Chr($01) + 'auth=Bearer ' + FToken + Chr($01) + Chr($01);
  end;
  Result := True;
end;

function TIdSASLXOAuth.StartAuthenticate(const AChallenge, AHost, AProtocolName: string): string;
begin
  Result := 'user=' + FUser + Chr($01) + 'auth=Bearer ' + FToken + Chr($01) + Chr($01);
end;

function TIdSASLXOAuth.ContinueAuthenticate(const ALastResponse, AHost, AProtocolName: string): string;
begin
  // Nothing to do
end;

procedure TIdSASLXOAuth.FinishAuthenticate;
begin
  // Nothing to do
end;

end.

Delphi-Quellcode:
          IdSASLXOAUTH := TIdSASLXOAuth.Create(SMTP);
          IdSASLXOAUTH.Token := FToken; // ca. 2300 Zeichen lang bei Microsoft
          IdSASLXOAUTH.User := FBenutzername;
          IdSASLXOAUTH.TwoLinePopFormat := true;
          SMTP.SASLMechanisms.Add.SASL := IdSASLXOAUTH;
Thomas Levering
  Mit Zitat antworten Zitat
friedt99

Registriert seit: 17. Mär 2010
46 Beiträge
 
#9

AW: Indy und OAuth / Microsoft365

  Alt 7. Sep 2023, 08:37
So, ich habe nochmal nachgesehen.

Es wird nur der tatsächliche Token verwendet, nicht das komplette JSON,
das war nur eine Logausgabe von dem Teil, der den Token abfragt.

Habe es auch mit der hier erwähnten Variante von TIdSASLXOAuth versucht.
Eine TIdSASLXOAuth2 ist im Fork von Remy Lebeau enthalten, diesen Fork habe ich verwendet.

Als Scope verwendet die Bibliothek (sgcWebSockets) 'https://graph.microsoft.com/.default'
(Token Abfrage für eine Service App).

Bekomme immer noch exakt den gleichen Fehler. Kann ich in Microsoft365 noch etwas
entscheidendes übersehen haben ?

Kann man in Microsft365 irgendwo fehlgeschlagene Anmeldeversuche anzeigen lassen ?
Habe jetzt unter https://compliance.microsoft.com/auditlogsearch die Überwachung aktiviert.
Mal schauen ob da dann etwas angezeigt wird.

Hat jemand einen Source zur Abfrage des Tokens mit "Bordmitteln" oder eine Empfehlung für
eine andere Bibliothek dazu mit der es schon mal funktioniert hat ? Eventuell stimmt ja was
bei der Tokenabfrage nicht.

Habe es mit https://github.com/geoffsmith82/GmailAuthSMTP versucht, da klappt aber die Tokenabfrage
schon nicht. Scheint als ob da die tenant-id nicht berücksichtigt wird.

Vielen Dank für die Antworten bisher.

Geändert von friedt99 ( 7. Sep 2023 um 09:38 Uhr)
  Mit Zitat antworten Zitat
Thomasl

Registriert seit: 19. Jun 2006
Ort: Vreden
67 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Indy und OAuth / Microsoft365

  Alt 7. Sep 2023, 08:42
und mit Scopes:

Delphi-Quellcode:


https://outlook.office.com/SMTP.Send offline_access openid email profile

kann sein das das für dich zu viele sind, die verwende ich
Thomas Levering
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz