使用azure帐户用户名和密码在azure中获取访问令牌

时间:2017-06-27 07:55:55

标签: azure azure-active-directory

我正在尝试收集蔚蓝资源的指标信息。为此,我需要一个访问令牌进行授权。但是要获得访问令牌,我必须提供客户端ID,客户端密码,订阅ID,租户id。我想知道我是否可以获得此访问令牌而不提供除我的azure帐户的用户名和密码之外的许多详细信息。

3 个答案:

答案 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

参考:
https://blogs.msdn.microsoft.com/wushuai/2016/09/25/resource-owner-password-credentials-grant-in-azure-ad-oauth/

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时,我会一直使用它。