10

我在 Angularjs 中实现了一个 SPA - Typescript 调用 VSO API 并提供您可以在下面找到的身份验证数据:

((): void => {
    "use strict";

    angular
        .module("app")
        .config(config);

    config.$inject = [
        "$httpProvider"
    ];

    function config(
        $httpProvider: ng.IHttpProvider
    ) {

        $httpProvider.defaults.headers.common['Authorization'] = "Bearer username:password";

    }
});

我看到浏览器的网络选项卡,此呼叫将被重定向到此处:

https://app.vssps.visualstudio.com/_signin?realm=dldxdm.visualstudio.com&reply_to...

并提出以下要求。

控制台没有显示任何身份验证错误,但我的请求(GET)没有结果,但应该是!我得到的不是结果,而是您在屏幕截图中看到的消息。当前在您的环境中启用了 Microsoft Internet Explorer 的增强安全配置。这种增强的安全级别会阻止我们的 Web 集成体验正确显示或执行。要继续您的操作,请禁用此配置或联系您的管理员。但是查询在 Chrome 中执行。为什么会出现 IE 错误消息?

在此处输入图像描述

在浏览器中,我登录到 VSO 到项目,如果我复制 url 并粘贴到另一个选项卡并执行它,我将得到我正在寻找的正确结果。

问题

  • 为什么我的 Angular 应用程序执行的查询没有结果?
  • 我应该如何对 VSO 进行身份验证?我无法设置令牌,因为它目前在 localhost 上运行。

我用谷歌搜索了 IE 错误消息,但没有答案。如何禁用 IE 的增强安全性我找到了 Windows Server 的答案。我认为它们与我的问题无关。

更新

好的,我有一篇关于正在发生的事情的文章。下一步,实施。

4

4 回答 4

10

当我的 PAT 由于复制和粘贴错误而出错时,我发现这发生在我身上。

看起来您可能无法通过身份验证,因为您没有对不记名令牌进行 base64 编码。

于 2017-02-02T04:03:56.403 回答
6

我有同样的问题。我在邮递员中验证了这一点,如下所示......

我不必对我的 PAT 进行 base64 编码。我发现我只需要仔细检查我的 PAT 是否具有正确的访问权限。我将数据作为基本身份验证传递。用户名:“随便你”密码:PAT

回应:200

于 2020-03-02T14:00:07.770 回答
5

在您的个人访问令牌 (PAT) 前加上:(冒号)。然后 Base 64 对其进行编码。

例如:

如果“myaccesstoken”是我的 PAT,

将 base 64 编码器应用于“:myaccesstoken”

在 Authorization 标头中,将您的基本编码字符串放置为,

授权:基本 MyColonPrefixedBase64String

于 2020-07-06T14:02:32.817 回答
0

如果其他人在 Azure devops 经典管道中遇到同样的错误后进入此页面(就像我一样),那么他们可能需要选择标题为“允许脚本访问 OAuth 令牌”的单选按钮。此选项在“阶段 >> 代理工作 >> 附加选项”中可用。为了更清楚,您可以参考这篇博文

于 2021-12-07T06:41:45.957 回答