Wenn einen stört, dass für jedes Login ein neues Tab im Browser aufgemacht wird, kann man das Login im Prinzip auch im eigenen Programm in einem eingebetteten Browser abhandeln. Das entspricht nicht den offiziellen Empfehlungen, wird aber trotzdem häufig so gemacht, auch von Microsoft. Die Nachteile sind, dass der Benutzer ohne Adressleiste nicht sieht, wo er seine Daten eingibt, deiner Applikation also unbedingt vertrauen muss und dass er sich neu anmelden muss, auch wenn er in seinem Standard-Browser ggf. schon angemeldet war.
Auch ein Passwort-Manager greift in den Embedded Browsern nicht. Google z.B. investiert auch jede Menge Zeit und Geld darin, dass die Google-Anmeldeseite bewusst nicht in embedded Browsern funktioniert. Auch das steht in der Spec: Ein IdP-Anbieter sollte verhindern das die Login-Seite in solchen Embedded Browsern funktioniert.
Was mich interessieren würde, ist das von dir erwähnte Verfahren bei Postman. Ich kenne Postman jetzt nur als Tool zum Debuggen von APIs. Wo könnte ich denn hier das beschriebene Verfahren finden, dass der Redirect an einen Server geht und der Client die Daten mit diesem austauscht?
Wenn Du eine mit OAuth abgesicherte
API testen willst, kannst Du beim Request (oder auf der Collection) bei Authorization einstellen das Du OAuth 2.0 haben willst.
Dann kannst Du bei der Konfiguration weiter unten sagen: Authorize using Browser und dann wird die Callback-
Url automatisch auf "https://oauth.pstmn.io/v1/callback" gesetzt.
Auf den Postman-Server verbindet sich Deine Postman-Instanz dann im Hintergrund und bekommt der dann die Daten, die mittels des Browsers an den pstmn.io-Server übertragen werden. Da das natürlich viele Leute gleichzeitig machen muss der Server dann rausfinden welche Postman-Instanz welche Callback-Daten bekommt, das dürfte sehr wahrscheinlich anhand des State-Parameters passieren.