azure - 为什么我的 Azure 移动服务不接受 ADAL.js 发送的不记名 token ?

标签 azure azure-mobile-services adal

我使用带有隐式流的 ADAL.js 来验证 AngularJS 应用程序,以便能够访问 Azure 移动服务 API。

我已在 AMS(Azure 移动服务)的“身份”选项卡中设置 Azure AD 身份信息,如下所示...

应用程序 URL 设置为:https://<>.azure-mobile.net/login/aad

客户端 ID 是 Azure AD 中设置的应用程序的客户端 ID。

允许的租户是:<>.onmicrosoft.com

header 包含在 GET 请求中:授权:Bearer eyJ0eXAiOiJKV1Qi...

但是我收到了 AMS 的 401 响应。

我做错了什么或遗漏了什么?

更新: 看来我必须调用 AMS 端点并传递 Azure AD access_token 才能获取 AMS token 。我得到这样的回应:

{"code":401,"error":"Error: Authentication with 'windowsazureactivedirectory' is not supported."}

所以,我想我必须按照指定的服务定向登录 https://msdn.microsoft.com/en-us/library/azure/dn283952.aspx

也许有一天 JavaScript 后端会支持这一点。但是,我使用 AMS 的次数越多,我就越觉得我应该使用 .net 后端。

更新 05/29

我将 AMS 更改为 .Net 后端,以便可以使用客户端定向流。我正在使用以下代码:

client.login('aad', { "access_token": sessionStorage['adal.idtoken'] })
            .done(function (results) {
                alert("You are now logged in as: " + results.userId);
                sessionStorage.X_ZUMO_AUTH = results.mobileServiceAuthenticationToken;
            }, function (err) {
                alert("Error: " + err);
            });

但是,我收到了 401 响应。

更新:根据另一个 SO 问题,我在 Azure AD 中为客户端创建了第二个应用程序。我已将其设置为允许访问 API 应用程序。我还将我的代码更新为以下内容:

          adalService.acquireToken('<<AMS App Client ID>>')
            .then(function(token) {

                $http({
                        method: 'POST',
                        url: constants.apiBaseUrl + '/login/aad', 
                        data: { "access_token" : token },
                        headers: {
                            'X-ZUMO-APPLICATION': constants.appKey
                        }
                      }).                
                    success(function (data, status, headers, config) {
                        alert(data);
                    }).
                    error(function (data, status, headers, config) {
                        alert(data);
                    });                        
            });
    }

但是,我仍然得到 401。我也用 mobile sdk 尝试过,仍然是 401。

最佳答案

看起来您正在遵循正确的步骤。您能否查看一下 Azure 网站上的操作方法,看看是否遗漏了什么?您能分享一下您用来登录的客户端代码吗?

https://azure.microsoft.com/en-us/documentation/articles/mobile-services-html-how-to-use-client-library/#caching

关于azure - 为什么我的 Azure 移动服务不接受 ADAL.js 发送的不记名 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30513990/

相关文章:

powershell - 如何使用 Azure Active Directory PowerShell V2 'Grant Permissions'

python - 错误 conda.core.link :_execute(502): An error occurred while installing package 'conda-forge::astor-0.7.1-py_0'

python - Azure Function ImportError 在云上运行时注册函数

azure - 刚刚创建的 Azure 移动应用服务调用返回 http 400 错误

oauth-2.0 - ADAL 4(实验性)对于 Windows 桌面/ native 和带有 B2C 的 Windows Phone 的行为有所不同

azure-active-directory - 基于 token 和基于 cookie 的应用程序之间的 SSO 体验

azure - 使用 ADAL 的 AuthenticationContext 获取访问 token

entity-framework - 如何使用 Entity Framework 代码优先在虚拟列上添加索引?

c# - 在 Windows Phone 8.1(通用应用程序)中如何确定我连接的是 WiFi 还是移动网络?

c# - 在本地调试azure应用程序服务?