1

我有一个后台应用程序,它应该连接到数据目录并获取与表相关的信息。由于它是一个后台应用程序,我无法让任何用户干预来验证数据目录请求。所以我尝试使用 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 - 未经授权:由于凭据无效,访问被拒绝。您无权查看此目录或页面使用您提供的凭据”。

请建议我在这里可能缺少的东西!

4

2 回答 2

0

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

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

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

在此处输入图像描述

在此处输入图像描述

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

我觉得对你有帮助。

于 2017-10-05T13:49:43.497 回答
-1

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

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

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

于 2017-04-21T21:59:21.607 回答