rest api 未经授权的 Azure 数据目录
rest api unauthorized Azure Data Catalog
我正在使用我组织的 Azure 数据目录。我不是目录的 creator/administrator/owner,但我可以从 Web 界面访问 register/delete 目录。
我想为 Azure 数据目录使用 rest API。在我的许可级别下可能吗?
我按照 https://msdn.microsoft.com/en-us/library/mt428033.aspx 中的所有步骤编写了以下代码:
class Program
{
static void Main(string[] args)
{
string url = "https://api.azuredatacatalog.com/catalogs/DefaultCatalog/search/search?searchTerms=My_Server&count=10&startPage=1&api-version=2016-03-30";
HttpWebRequest request = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
Console.WriteLine(AccessToken().CreateAuthorizationHeader());
try
{
WebResponse response = request.GetResponse();
Console.WriteLine(response.ContentLength);
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadKey();
}
static AuthenticationResult AccessToken()
{
string resourceUri = "https://datacatalog.azure.com";
string clientId = "my-client-id";
string redirectUri = "my-redirect-uri";
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
return authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri), PromptBehavior.RefreshSession);
}
}
当我尝试 运行 从 API 进行搜索时,出现以下错误:
System.Net.WebException: The remote server returned an error: (401)
Unauthorized. at System.Net.HttpWebRequest.GetResponse() at
HRBIADCAPI.Program.Main(String[] args) in
c:\users\naghimir\documents\visual studio
2015\Projects\HRBIADCAPI\HRBIADCAPI\Program.cs:line 32
现在我认为问题是我没有授予对创建到 read/write 数据目录(我在 Azure 数据工厂中所做的)的客户端程序的访问权限,但文档中也没有该步骤。
我是否需要成为所有者或是否可以请求所有者的许可才能使用 Azure 数据目录API?
根据描述,您正在使用 OAuth 2.0 代码授权流程 授权应用委托用户操作 Azure 数据目录。
为了确保请求正常运行,我们需要将范围授予应用程序,如下图所示:
并且由于应用只委托用户的权限,请确保用户有足够的权限手动操作资源。
我正在使用我组织的 Azure 数据目录。我不是目录的 creator/administrator/owner,但我可以从 Web 界面访问 register/delete 目录。
我想为 Azure 数据目录使用 rest API。在我的许可级别下可能吗? 我按照 https://msdn.microsoft.com/en-us/library/mt428033.aspx 中的所有步骤编写了以下代码:
class Program
{
static void Main(string[] args)
{
string url = "https://api.azuredatacatalog.com/catalogs/DefaultCatalog/search/search?searchTerms=My_Server&count=10&startPage=1&api-version=2016-03-30";
HttpWebRequest request = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
Console.WriteLine(AccessToken().CreateAuthorizationHeader());
try
{
WebResponse response = request.GetResponse();
Console.WriteLine(response.ContentLength);
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadKey();
}
static AuthenticationResult AccessToken()
{
string resourceUri = "https://datacatalog.azure.com";
string clientId = "my-client-id";
string redirectUri = "my-redirect-uri";
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
return authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri), PromptBehavior.RefreshSession);
}
}
当我尝试 运行 从 API 进行搜索时,出现以下错误:
System.Net.WebException: The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse() at HRBIADCAPI.Program.Main(String[] args) in c:\users\naghimir\documents\visual studio 2015\Projects\HRBIADCAPI\HRBIADCAPI\Program.cs:line 32
现在我认为问题是我没有授予对创建到 read/write 数据目录(我在 Azure 数据工厂中所做的)的客户端程序的访问权限,但文档中也没有该步骤。
我是否需要成为所有者或是否可以请求所有者的许可才能使用 Azure 数据目录API?
根据描述,您正在使用 OAuth 2.0 代码授权流程 授权应用委托用户操作 Azure 数据目录。
为了确保请求正常运行,我们需要将范围授予应用程序,如下图所示:
并且由于应用只委托用户的权限,请确保用户有足够的权限手动操作资源。