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