2016-09-08 2 views
0

Ich versuche, ein OAuth-Token zu validieren, das mein serverseitiger Code empfängt.Validieren Exchange-OAuth-Token

Der serverseitige Code verwendet die Exchange-verwaltete API und das Token, das gesendet wird, wurde von meinem Add-In aus Exchange mithilfe der Office.context.mailbox.getUserIdentityTokenAsync(callback)-Methode in der Outlook-API abgerufen.

Ich laufe in ein Problem, wenn ich rufe die token.Validate(uri) Methode:

var token = (AppIdentityToken)AuthToken.Parse(rawToken); 
token.Validate(new Uri(hostUri)); 

Nach dem documentation:

hostUri: Der vollständig qualifizierte URI auf die Seite in Ihrem Outlook-Add -in dem getUserIdentityTokenAsync aufgerufen.

Um die hostUri innerhalb der Seite in dem Add-In zu erhalten, die ich benutze:

var hostUri = location.href.split('?')[0]; 

jedoch, dass vorgesehen URI, ein Fehler verursacht, wenn das Token zu validieren versucht:

Ich bin verwirrt, warum es den URI von wo das Add-In verwendet wird statt den öffentlichen Schlüssel des Identity Providers zu verwenden, der das Token (dh Exchange) ausgestellt hat.

Antwort

1

Die EWS-Token-Validierungsbibliothek überprüft die Signatur des Tokens über den öffentlichen Schlüssel.

Der Host-URI wird verwendet, um den aud Anspruch im id_token zu validieren, um zu bestätigen, dass dieses Token von Ihrer Anwendung anstelle von anderen Anwendungen übergeben wird.

Bitte stellen Sie sicher, dass der Uri ist die Host-Seite passen, können Sie die die id_token durch jwt.io um zu sehen, den realen Uri (aud) im Token analysieren.

+0

Ja, es stellt sich heraus, dass die Token-Validierungsbibliothek im 'amurl'-Feld nachschaut, wo sie den öffentlichen Schlüssel zur Validierung des Tokens erhalten kann. In unserem Fall haben wir den Austausch in einer Test-VM mit einem erfundenen Domainnamen eingerichtet, so dass wir ihn nicht erreichen konnten. Sobald das behoben war (Datensatz zur Hostdatei hinzufügen), konnte er den öffentlichen Schlüssel und das Validierungs-Token abrufen . –