首页 文章

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

提问于
浏览
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 回答

  • 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/

相关问题