【问题标题】:Visual Studio Team Services Rest API unauthorized_client errorVisual Studio Team Services Rest API 未授权客户端错误
【发布时间】:2016-06-29 08:18:34
【问题描述】:

我正在开发一个 JavaScript 应用程序来在 Visual Studio Team Services(以前是 Visual Studio Online)中创建工作项。但是在进行身份验证时,我收到以下错误。

{"错误":"unauthorized_client","ErrorDescription":null}

我不想编写任何 C# 代码,所以我全部以 html/javascript 方式进行。 我得到的是 Auth_Code 但 access_token。

<form method="post" action="https://app.vssps.visualstudio.com/oauth2/token?   redirect_uri=http://mycallbackurl" id="accesstoken" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="client_assertion_type" value="urn:ietf:params:oauth:client-assertion-type:jwt-bearer" />
<input type="hidden" id="client_assertion" name="client_assertion" value="appSecret" />
<input type="hidden" name="grant_type" value="urn:ietf:params:oauth:grant-type:jwt-bearer" />
<input type="hidden" id="assertion" name="assertion" value="auth_code" />

我正在提交上述表格,并且收到此错误。 我什至尝试使用 $.ajax 做同样的事情,但结果相同。

请帮帮我。

【问题讨论】:

    标签: javascript azure-devops


    【解决方案1】:

    您不能按照 API 文档 Auth 页面上的常见问题解答通过客户端代码发送授权用户。

    问:我可以在手机应用中使用 OAuth 吗?

    答:没有。目前,Visual Studio Team Services 仅支持 Web 服务器流,因此没有支持的方式来实现 OAuth for Visual Studio Team Services 来自手机应用程序等应用程序,因为没有 安全存储应用程序机密的方法。

    https://www.visualstudio.com/en-us/integrate/get-started/auth/oauth

    您必须通过服务器端代码进行 OAuth 握手。

    【讨论】:

    • @Aaron 当我使用请求包从 node.js 的服务器端执行此操作时,我遇到了同样的错误
    • 您能提供您发送的原始 HTTP 请求吗?也许您没有正确设置请求。
    • 这是否意味着也不能在 Ajax 调用中进行更新(例如对工作项)?我有所有的 OAuth 东西都在 C# 中工作,用于为用户获取访问令牌并查询工作项等等,我有一个很好的 UI,它使用我自己的个人访问令牌来处理 VSTS 的 Ajax 更新.我想将用户的 OAuth 访问令牌用于 Ajax 调用,而不是我的 PAT。这可能吗(如果可以的话怎么办?-我已经想了好几个小时了!)。
    • Philip,通常情况下,OAuth API 将允许您通过服务器端代码代表用户获取访问令牌。您可以为用户获取令牌,然后将其发送到您的前端,您可以从前端代表用户发出授权的 Ajax 请求。然而,理想的安全方案是通过服务器端代理用户认证的请求,并将用户令牌保存在数据库中以供重复使用。
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 2016-10-06
    • 2018-09-06
    • 2017-02-22
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多