2

Я использую webView для создания мобильного приложения. Это означает, что мы пишем в HTML/JS, размещенном локально (файловая система), получая данные от API. Используя ADAL.js Я получил id_token, пытаясь использовать его для получения токена аутентификации, так как described here приводит к 401 Unauthorized.Azure Active Directory Access Token от Id Token

Отсутствует какая-то конфигурация?

Запрос:

POST https://myAMS.azure-mobile.net/login/aad HTTP/1.1 
Host: myAMS.azure-mobile.net 
Connection: keep-alive 
Content-Length: 1264 
Pragma: no-cache 
Cache-Control: no-cache 
Accept: application/json, */*; q=0.01 
Origin: file:// 
Authorization: Bearer ey...Ww 
User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; en-us; Nexus 4 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2307.2 Mobile Safari/537.36 
Content-Type: application/json 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 

access_token=ey...Ww 

Response

HTTP/1.1 401 Unauthorized 
Content-Length: 0 
Server: Microsoft-IIS/8.0 
WWW-Authenticate: Basic realm="Service" 
Access-Control-Allow-Origin: * 
X-Powered-By: ASP.NET 
Date: Mon, 27 Jul 2015 10:47:45 GMT 

ответ

1

Это, вероятно, рассогласование аудитории. ADAL.JS получает id_token через неявный поток, что требует идентификации целевого ресурса по его идентификатору clientID (GUID). Я не в команде мобильных служб, но я предполагаю, что они ожидают в входящем токене URI идентификатора приложения. Вам нужно получить токен доступа, чтобы получить аудиторию, отличную от идентификатора clientID. Асплет в https://github.com/AzureADSamples/SinglePageApp-WebAPI-AngularJS-DotNet показывает вам, как это сделать. Отказ от ответственности: ADAL.JS не предназначен для использования в веб-представлении. В этом случае вы можете обнаружить, что его использование затруднено. В этих случаях мы предоставляем плагин Cordova: http://www.cloudidentity.com/blog/2015/04/06/adal-plugin-for-apache-cordova-deep-dive/

+0

Что делать, если мы не используем кордову? – JNF

+0

Если вы строите все с нуля, у вас могут быть проблемы. Плагин ADAL Cordova использует собственные библиотеки ADAL для каждой платформы, которые, в свою очередь, реализуют сложную логику кэширования и сбора данных. Если вы просто используете ADAL JS или переделаете его, чтобы адаптировать его для работы в веб-представлении, вы потеряете все эти функции - так как веб-представление изолировано от реального устройства. Позвольте мне подчеркнуть это: вы можете использовать ADAL JS в сценарии, отличном от SPA, но вы должны ожидать ударов, поскольку это не та настройка, для которой она была разработана. – vibronet

+0

Мы получаем доступ к родным, но через другой движок (внутренний). Любой пример, который не требует прохождения через кучу Углового? ... – JNF