使用Azure AAD OAuth2通过Azure服务管理API进行身份验证

时间:2015-09-28 07:31:00

标签: powershell azure oauth-2.0

我正在开发一个本机应用程序,该应用程序应该访问正在登录的客户的Azure租户(如Azure PowerShell登录体验)。 我尝试使用Azure PowerShell的客户端ID,但更新凭据的刷新令牌似乎仅在12小时内有效。后来,用户必须再次登录。

我尝试创建多租户Azure AAD应用程序,但多租户不适用于本机AAD应用程序。如何获得类似于PowerShell AAD客户端ID 1950a258-227b-4e31-a9cf-717495945fc2的客户端ID,它允许我使用用户登录的Azure Service Management API(谁不在我的Azure AD中)。

1 个答案:

答案 0 :(得分:2)

首先,您应该考虑在Azure Active Directory application gallery中列出您的应用。这是做你想做的事的正确方法。他们将为您生成客户端ID。您不应该使用已为其他应用创建的应用。那说......

出于测试目的,我想做类似的事情。我使用了VS客户端ID,并且能够使用此代码成功验证:

public static string GetAuthorizationHeader()
        {
            AuthenticationResult result = null;

            var context = new AuthenticationContext("https://login.windows.net/common"); // tenant agnostic endpooint
            result = context.AcquireToken("https://management.core.windows.net/",
                                          "1950a258-227b-4e31-a9cf-717495945fc2", // Windows Azure Management API's Client ID
                                          new Uri("urn:ietf:wg:oauth:2.0:oob")); // standard redirect for native apps (console, desktop, mobile, etc)

            if (result == null)
            {
                throw new InvalidOperationException("Failed to obtain the JWT token");
            }

            return result.AccessToken;
        }

我在这里将代码发布到GitHub:devdash/EzAzureMgmtApiAuth,我的博客上有更详细的信息:http://devian.co/2015/07/01/authenticate-to-the-azure-service-management-api/