2016-09-08 8 views
0

Я пытаюсь проверить токен oAuth, который получает мой серверный код.Validate Exchange oAuth token

Код на стороне сервера использует управляемый Exchange API, а отправляемый токен был получен моей надстройкой из Exchange с использованием метода Office.context.mailbox.getUserIdentityTokenAsync(callback) в API Outlook.

Я бегу на вопрос, когда я называю token.Validate(uri) метод:

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

Согласно documentation:

hostUri: Полное URI на странице в вашем Outlook, добавить в том, что называется getUserIdentityTokenAsync.

Чтобы получить hostUri внутри страницы в надстройке, я использую:

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

Однако с помощью этого при условии URI, вызывает ошибку при попытке проверки маркера:

Error message

Я смущен тем, почему он будет использовать URI, где находится надстройка, вместо использования открытого ключа поставщика удостоверений, который выдал токен (то есть Exchange).

ответ

1

Библиотека проверки подлинности маркера EWS делает проверку подписи токена с помощью открытого ключа.

Хост Uri используется для проверки претензии aud в id_token для проверки того, что этот токен передается из приложения вместо другого приложения.

Пожалуйста, убедитесь, что Uri является сопрягать страницу хоста, вы можете разобрать на id_token через jwt.io, чтобы увидеть реальную Uri (Ауд) в маркере.

+0

Да, получается, что библиотека проверки токена просматривает поле 'amurl', чтобы узнать, где он может получить открытый ключ для проверки токена. В нашем случае мы установили обмен в тестовой виртуальной машине с составленным доменным именем, поэтому мы не смогли его достичь, после того как исправлено (добавление записи в файл хоста), он смог получить открытый ключ и проверить токен , –