基于应用程序令牌的请求返回401未授权

时间:2017-04-02 21:14:31

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

我有一个后台应用程序,它应该连接到数据目录并获取与表相关的信息。由于它是后台应用程序,我无法进行任何用户干预来验证数据目录请求。所以我试图使用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 - 未授权:由于凭据无效而拒绝访问。您无权使用您提供的凭据和#34;。

查看此目录或页面

请建议我在这里缺少什么!

2 个答案:

答案 0 :(得分:0)

首先在Azure广告权限中检查您的应用程序权限。我在Application Azure数据目录中检查了没有权限。因此,您必须使用用户凭据进行访问。请参阅图像

  

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

如果没有登录弹出窗口,您必须传递用户凭据 在authContext1.AcquireTokenAsync直接。

enter image description here

enter image description here

因此,更改并检查您是否未获得401 Unauthorized

我认为这对你有所帮助。

答案 1 :(得分:-1)

有些数据不正确,这里是正确的值:

string authorityUri =“https://login.windows.net/common/oauth2/authorize”; string resourceUri =“https://api.azuredatacatalog.com”;

希望这有帮助, 莫妮卡