2013-08-15 2 views
1

Я пытаюсь реализовать аутентификацию и идентификацию в кросс-платформенном мобильном приложении, использующем службу WebApi.Проверка маркера Azure Mobile Service в службе WebApi

Мой план заключается в том, чтобы экспортировать аутентификацию в федеративную облачную службу, такую ​​как новая Azure Mobile Service. Приложение Client Mobile будет использовать поток аутентификации Mobile Service, получить токен и будет передавать его в заголовки запросов в WebApi, что, в свою очередь, будет проверять его и извлекать из него UserId.

Предполагая, что я уже настроил WebApi для проверки токенов JWT с использованием перехватчика DelegatingHandler, можно проверить токены, выданные Azure Mobile Service?

Каковы правильные значения для SymmetricKey, Эмитента и Аудитории?

Я иду в правильном направлении?

ответ

2

Публикация на http://www.thejoyofcode.com/Generating_your_own_ZUMO_auth_token_Day_8_.aspx показывает, как генерирует токен Azure Mobile Service, но у него есть информация, необходимая для его проверки. В принципе, ключ, который вы должны использовать для проверки, это главный ключ из службы (не распространяйте этот ключ на любых клиентов, но если он безопасно закодирован в вашей службе, это должно быть хорошо). Аудитория зависит от поставщика, который создал токен (например, для FB, это строка "Facebook"). Эмитент установлен в urn:microsoft:windows-azure:zumo.

+0

Спасибо за это! Тем не менее, мне не повезло проверить токен JWT, полученный от «Azure» на WebApi, поэтому на данный момент у меня нет рабочего решения ... Я спросил [отдельный вопрос SO] (http://stackoverflow.com/ q/18273776/2126652) для более подробной информации. – Liel

+1

В GitHub есть проект под названием ** MyVote **, который имеет базовую реализацию маркера-валидатора JWT. Этот код был взят из старого образца ASP.NET, который был удален. Я добавил проблему в SDK мобильных сервисов, чтобы предоставить нам выделенный валидатор токенов для JS и управляемых бэкэнд. Вот ссылка на репо [MyVote] (https: // github.ком/Magenic/MyVote/дерево/мастер/SRC/MyVote.AppServer/Авт) – awsomedevsigner

1

Что вам нужно сделать в вашем проекте WebAPI, это реализовать специальный обработчик сообщений, чтобы перехватить токен и подтвердить его подписью, используя тот же главный ключ от AMS. Существует проект на GitHub, который показывает, как это сделать:

JWT Validator

Это было в основном производным от другого проекта GitHub, который имеет оригинальный образец ASP.NET здесь:

AuthenticationTokenSample

Основная проверка выполняется при вызове метода ValidateSignature(), который берет байты представления UTF-8 сегмента претензии JWT и вычисляет MAC MAC HMAC SHA-256 с использованием общего ключа от Azure Mobile Services. Если JWT Crypto Segment и ранее вычисленное значение, то есть подтверждение того, что ключ использовался для генерации HMAC на JWT и что содержимое сегмента претензии JWT не подделано.

Одно главное, что я нашел, чтобы удалить прилагаемой "JWTSig" строки из, добавленными к мастер-ключа в методе ValidateSignature(). Кажется, что токены, которые подписываются, больше не добавляют эту строку к главному ключу больше от AMS. У меня были всевозможные проблемы с получением валидации, пока я не удалю этот сегмент.

Смежные вопросы