rest api未经授权的Azure数据目录

时间:2016-10-24 08:49:47

标签: rest azure azure-data-factory azure-data-catalog

我正在使用我的组织的 Azure数据目录。我不是目录的创建者/管理员/所有者,但我可以从Web界面注册/删除目录。

我想使用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:远程服务器返回错误:(401)   未经授权。在System.Net.HttpWebRequest.GetResponse()处   HRBIADCAPI.Program.Main(String [] args)in   c:\ users \ naghimir \ documents \ visual studio   2015 \ Projects \ HRBIADCAPI \ HRBIADCAPI \ Program.cs:第32行

现在我认为问题在于我没有访问为读/写数据目录而创建的客户端程序(我在Azure数据工厂中执行过),但文档中也没有该步骤。

我是否需要成为所有者,或者是否可以请求所有者授权使用Azure数据目录API?

1 个答案:

答案 0 :(得分:1)

根据说明,您使用 OAuth 2.0代码授予流授予应用委派用户操作Azure数据目录的权限。

为确保请求正常,我们需要将范围授予应用程序,如下图所示:  enter image description here

由于应用程序仅委派用户的权限,请确保用户具有足够的权限来操作资源。