我正在尝试收集蔚蓝资源的指标信息。为此,我需要一个访问令牌进行授权。但是要获得访问令牌,我必须提供客户端ID,客户端密码,订阅ID,租户id。我想知道我是否可以获得此访问令牌而不提供除我的azure帐户的用户名和密码之外的许多详细信息。
答案 0 :(得分:3)
这是可能的,但它被认为是不安全的。你仍然需要很多参数:
Name Description
grant_type The OAuth 2 grant type: password
resource The app to consume the token, such as Microsoft Graph, Azure AD Graph or your own Restful service
client_id The Client Id of a registered application in Azure AD
username The user account in Azure AD
password The password of the user account
scope optional, such as openid to get Id Token
PS。不要介意沃尔特,他的回答中有50%的时间他是错的。
答案 1 :(得分:2)
基本上你需要参数。 Azure的API受Azure AD保护,因此您必须先对其进行身份验证。如果您想以用户身份进行呼叫,则仍需要使用以下几种方法之一进行身份验证。密码授权(如@ 4c74356b41答案中所示)是一个选项,但并不是真的推荐。原因是如果用户的密码已过期或已启用MFA,则无法使用。
您通常要求用户通过Azure AD登录页面(通过重定向或Web视图)登录,然后将生成的授权代码交换为访问令牌和刷新令牌。然后,您可以作为用户对API进行调用。
另一种选择是在Azure AD中注册您的应用,并在Azure订阅/资源组/资源中为其服务主体授予一些角色。然后,它可以使用客户端凭据进行身份验证(仅使用其客户端ID和机密+您的Azure AD租户ID)。
答案 2 :(得分:2)
这实际上取决于您的需求,以及您是否希望完全自动化。
如果您想拥有ServicePrincipal的令牌,4c74356b41的答案是一个很好的方法。
但是,如果您希望为已在PowerShell会话中进行身份验证的用户(您或其他AAD用户)获取持有者令牌,则可以使用我编写的这段代码轻松完成此操作。< / p>
https://gallery.technet.microsoft.com/scriptcenter/Easily-obtain-AccessToken-3ba6e593
基本上它是什么,它从令牌缓存中获取当前令牌并将其返回给您。这样您就不必处理clientId,cliendSecret或证书。当我需要以及时方式调用Azure REST API时,我会一直使用它。