【问题标题】:Connect to Azure AD using username/password使用用户名/密码连接到 Azure AD
【发布时间】:2017-04-07 16:55:45
【问题描述】:

我有一个 Azure Api REST,可以通过输入用户名/密码来访问。 如何从 C# 访问此 API?

经过一番搜索,我发现了一些关于使用 AuthenticationContext .. 但它对我不起作用 Authenticationcontext .AcquireToken(resource, clientId, credential);

我在哪里可以获得 'resource' 参数和 ClientID

非常感谢

【问题讨论】:

    标签: c# azure authentication azure-active-directory


    【解决方案1】:

    我的大部分工作都基于this post,这奠定了一些基础。

    您需要先在您的 Azure AD 中创建一个本机应用程序并添加 Windows Azure 服务管理 API 权限。

    ClientID是从这个应用程序中获取的。

    这是我目前用来获取可与管理 SDK 一起使用的令牌的代码:

    string userName = "yourUserName";
    string password = "yourPassword";
    string directoryName = "yourDirectory.onmicrosoft.com";
    string clientId = "{ClientId obtained by creating an App in the Active Directory}";
    var credentials= new UserPasswordCredential(string.Format("{0}@{1}", userName, directoryName), password);
    var authenticationContext = new AuthenticationContext("https://login.windows.net/" + directoryName);
    var result = await authenticationContext.AcquireTokenAsync("https://management.core.windows.net/", clientID, credentials);
    var jwtToken = result.AccessToken;
    //Example accesing Azure Cdn Management API
    string subscriptionId = "xxxx-xxxxxx-xxxx-xxxxxxx";
    using (var cdn = new CdnManagementClient(new TokenCredentials(jwtToken)) { SubscriptionId = subscriptionId })
    {
        //do something...
    }
    

    您的目录名称可在 域名 上的 Azure 门户 > Azure AD 部分中获取。

    【讨论】:

    • 我的应用托管在一个 azure 网站中:AppHostedName.azurewebsites.net 在我的示例中,目录名称将是“AppHopstedName”?
    • 您可以在 Azure 上看到目录名称,转到 Azure AD 服务并检查 域名。我编辑了答案以包含屏幕截图。
    • 谢谢马蒂亚斯,你帮了我很多
    • 我很高兴它成功了! :D Azure AD 不是最适合编程的服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2023-03-25
    • 1970-01-01
    • 2019-03-29
    • 2019-05-08
    • 1970-01-01
    相关资源
    最近更新 更多