来自Id令牌的Azure Active Directory访问令牌

时间:2015-07-27 11:11:12

标签: azure-mobile-services azure-active-directory adal.js

我使用webView构建移动应用。这意味着我们在本地托管的HTML / JS(文件系统)中编写,从API接收数据。使用ADAL.js我收到id_token,尝试使用它来获取身份验证令牌,因为described here会产生401 Unauthorized

是否缺少某些配置?

请求:

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

响应

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 个答案:

答案 0 :(得分:1)

这可能是观众不匹配的原因。 ADAL.JS通过隐式流获取id_token,这需要通过其clientID(GUID)来标识目标资源。我不在移动服务团队中,但我认为他们期望在传入令牌中使用app ID URI。您需要获取访问令牌才能获得除clientID之外的其他受众。 https://github.com/AzureADSamples/SinglePageApp-WebAPI-AngularJS-DotNet中的asmple向您展示了如何。 免责声明:ADAL.JS不适用于Web视图。您可能会发现在这种情况下使用起来很困难。对于这些情况,我们提供了Cordova插件:http://www.cloudidentity.com/blog/2015/04/06/adal-plugin-for-apache-cordova-deep-dive/