我有一个后台应用程序,它应该连接到数据目录并获取与表相关的信息。由于它是后台应用程序,我无法进行任何用户干预来验证数据目录请求。所以我试图使用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;。
查看此目录或页面请建议我在这里缺少什么!
答案 0 :(得分:0)
首先在Azure广告权限中检查您的应用程序权限。我在Application Azure数据目录中检查了没有权限。因此,您必须使用用户凭据进行访问。请参阅图像
应用程序权限基于客户端凭据。代表 基于登录用户权限的权限。
如果没有登录弹出窗口,您必须传递用户凭据
在authContext1.AcquireTokenAsync
直接。
因此,更改并检查您是否未获得401 Unauthorized
我认为这对你有所帮助。
答案 1 :(得分:-1)
有些数据不正确,这里是正确的值:
string authorityUri =“https://login.windows.net/common/oauth2/authorize”; string resourceUri =“https://api.azuredatacatalog.com”;
希望这有帮助, 莫妮卡