0

Я создал новое мобильное приложение, которое можно использовать в моем приложении Xamarin.iOS. У моего приложения нет зарегистрированного пользователя, все, что мне нужно, - это безопасный доступ к службе api для мобильных приложений в моем приложении ios.Azure AD Auth для мобильных приложений?

После 10 часов попыток я все еще не мог понять, как заставить его работать.

Я создал новое мобильное приложение, включил аутентификацию/авторизацию в настройке (Azure Portal) и создал новое приложение каталога Azure Active.

Я получил свой [MobileAppController] с тегом [Authorize].

Для проверки я запросил маркер

Метод: POST
URL: https://login.microsoftonline.com/mytenant.onmicrosoft.com/oauth2/token
grant_type: client_credentials
CLIENT_ID: {один из раздела AD для приложения}
client_secret: {один из раздела AD для приложения}

Я получил маркер, но использовать его для доступа (POSTMAN приложение)

https://mytestmobileapp.azurewebsites.net/api/values с заголовками
авторизации: Знаменосец {маркер}

дает мне

"message": "Authorization has been denied for this request." 

Любая помощь будет оценена по достоинству.

Спасибо ...

+1

У меня есть друг, который недавно написал серию из трех статей об этом в своем блоге: http://www.pa-roy.com/azure-app-services-custom-auth-part-3/ –

ответ

1

Я ответил на мой блоге, но я также положить это здесь для тех, кто видит.

Почему вы хотите напрямую позвонить в конечную точку? Клиент SDK должен обрабатывать все это (как видно из их учебника: https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-xamarin-ios-get-started-users/)

Я не думаю, что это хорошая идея, чтобы повторно использовать колесо, вызвав непосредственно AD. Существует механизм обратного вызова для сервера, чтобы получить этот токен от AD, и я думаю, что это то, что здесь отсутствует.

+0

I не хочу использовать SDK, потому что я пытаюсь реализовать отказоустойчивые сетевые службы, используя Fussilade, Refit и т. д. (http://arteksoftware.com/resilient-network-services-with-xamarin/). Как часть этого, я использую httpClient для выполнения всех своих сетевых вызовов вместо MobileServiceClient. Это была моя причина использовать конечную точку напрямую. –

0

Хорошо, наконец, после ужасных разочарований я нашел ответ. Благодаря комментариям @https://github.com/Azure/azure-mobile-apps-ios-client/issues/14

Я установил потоковые журналы и подробные сообщения об ошибках, чтобы выяснить, что происходит, и я обнаружил, что это ошибка.

2016-01-18T20: 06: 31 PID [7448] Предупреждение Не удалось выполнить проверку JWT: IDX10214: Ошибка проверки аудитории.Аудитории: 'https://quicktestmobileauthapp123.azurewebsites.net'. Не совпадало: validationParameters.ValidAudience: '8649d624-47ce-447f-9a5e-xxxxxxxxxxxx' или validationParameters.ValidAudiences: 'http://quicktestmobileauthapp123.azurewebsites.net'.

Тогда я понял, что должен передать ресурс при запросе токена.

Мой новый маркер запроса

Method: POST 
URL : https://login.microsoftonline.com/mytenant.onmicrosoft.com/oauth2/token 
grant_type : client_credentials 
client_id : {one from AD section for the app} 
client_secret : {one from AD section for the app} 
resource : {clientId from the AD section} 

Тогда фишку я получил от описанного выше способа работал нормально без каких-либо проблем. Лазурные потоковые журналы потрясающие.

UPDATE

Я создал новый вопрос с ответом происходит через шаг за шагом объяснения. How to add simple authentication to azure mobile/web apps with Azure Active Directory?