【问题标题】:Application Token based Request returning not 401 Unauthorized基于应用程序令牌的请求返回非 401 Unauthorized
【发布时间】:2017-08-27 16:03:54
【问题描述】:

我有一个后台应用程序,它应该连接到数据目录并获取与表相关的信息。由于它是一个后台应用程序,我无法让任何用户干预来验证数据目录请求。所以我尝试使用 ClientID 和 ClientSecret 进行身份验证。

string authorityUri = "https://login.microsoftonline.com/{adtenanthere}";

string resourceUri = "https://datacatalog.azure.com";

string clientId = "{clientidhere}";

string clientSecret = "{clientsecrethere}";

AuthenticationContext authContext1 = new AuthenticationContext(authorityUri, false);

ClientCredential credential = new ClientCredential(clientId, clientSecret);

AuthenticationResult authResult = authContext1.AcquireTokenAsync(resourceUri, credential).Result;

string token = authResult.CreateAuthorizationHeader();

使用此方法获取令牌成功,但是当我将此令牌用于数据目录 API 请求时,请求返回“401 - 未经授权:由于凭据无效,访问被拒绝。您无权查看此内容使用您提供的凭据的目录或页面”。

请提出我在这里可能缺少的内容!

【问题讨论】:

    标签: azure azure-authentication azure-data-catalog


    【解决方案1】:

    首先在 Azure 广告权限中检查您的应用程序权限。我在应用程序 Azure 数据目录中检查了无权限。因此,您必须使用用户凭据进行访问。见下图

    应用程序权限基于客户端凭据。代表 基于登录用户权限的权限。

    您应该需要没有登录弹出窗口,您必须传递用户凭据 直接在authContext1.AcquireTokenAsync 中。

    所以,更改并检查你没有得到 401 Unauthorized

    我认为这对你有帮助。

    【讨论】:

    • Monica 给定的权限 url 和资源 url 也检查一个它的值是否正确
    【解决方案2】:

    部分数据不正确,以下是正确值:

    字符串 authorityUri = "https://login.windows.net/common/oauth2/authorize"; string resourceUri = "https://api.azuredatacatalog.com";

    希望这会有所帮助, 莫妮卡

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 2023-03-09
      • 2017-03-14
      • 2022-01-11
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多