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

我正在开发一个本机应用程序,该应用程序应该访问正在登录的客户的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)

2 years ago

首先,您应该查看在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/