我需要使用REST API获取访问令牌以访问Azure(https://management.azure.com端点)中的资源。每篇文章都已阅读,正在使用Appliction Id。就我而言,Azure租户刚刚以编程方式创建,我必须在其中创建一些资源。
我唯一拥有的是租户ID,订阅ID,管理员帐户的用户名和密码。如何仅使用我拥有的信息进行身份验证?如何在PowerShell中工作,不需要使用Application Id?
答案 0 :(得分:3)
根据我的知识,这是不可能的。正如junnas所说,即使您使用用户/密码验证,也需要客户端ID。
您可以轻松地在Azure上创建服务主体,您可以查看link。
创建sp后,您将获得客户端ID,客户端密码。您还需要在订阅时提供sp <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
角色,您可以查看此link。
现在,您可以使用sp在Power Shell中调用rest api,例如。
Owner
答案 1 :(得分:0)
您可以使用Microsoft PowerShell应用程序ID进行身份验证,而无需拥有自己的应用程序ID。此代码片段将为您提供令牌:
Import-Module MSOnline # IMPORTANT! Loads type assembly Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext
$TENANTID = "" # Your Tenant ID
$clientId = "1b730954-1685-4b74-9bfd-dac224a7b894" # PowerShell Client Id
$MSMgmtURI = "https://management.core.windows.net"
$authority = "https://login.microsoftonline.com/$TENANTID"
$redirectUri = "urn:ietf:wg:oauth:2.0:oob"
$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
$authResult = $authContext.AcquireToken($MSMgmtURI, $clientId, $redirectUri, "Always")
$token = $authResult.AccessToken
$headers = @{'Authorization' = "Bearer $token", 'host'="management.azure.com", 'Content-Type' = "application/json"}
这对于使用登录对话框获取访问令牌非常有用。我怀疑可以在上面的Oath2调用中使用PowerShell的客户端ID。