2017-06-27 93 views
1

我試圖收集天藍色資源的度量信息。爲此,我需要一個訪問令牌來授權。但要獲得訪問令牌,我必須提供客戶端ID,客戶端密碼,訂閱ID,租戶ID。我想知道我是否可以獲取此訪問令牌,但不提供除Azure帳戶的用戶名和密碼之外的任何詳細信息。使用天藍色帳戶用戶名和密碼獲取訪問令牌

回答

2

基本上你需要參數。 Azure的API受Azure AD保護,因此您必須首先進行身份驗證。如果您想以用戶身份撥打電話,您仍然需要使用可用的幾種方法之一進行身份驗證。密碼授權(如@ 4c74356b41答案中所示)是一種選擇,但它並不是真正的建議。原因是,如果用戶的密碼已過期或啓用了MFA,它將不起作用。

您通常要做的是請求用戶通過Azure AD登錄頁面(通過重定向或Web視圖)登錄,然後交換訪問令牌和刷新令牌的結果授權碼。然後,您可以以用戶的身份對API進行調用。

另一種選擇是在Azure AD中註冊您的應用程序,並將其服務主體授予Azure訂閱/資源組/資源中的某些角色。然後它可以使用客戶端憑據進行身份驗證(僅使用其客戶端ID和祕密+ Azure AD租戶ID)。

+0

感謝您的好解釋。 –

2

這是可能的,但它被認爲是不安全的。而你仍然需要大量的參數:

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。不介意Walter,在他的回答中他錯了50%的時間。

2

這真的取決於您的需要,如果你想這完全自動化或不。

如果你想擁有一個ServicePrincipal的標記,4c74356b41的答案是一個很好的方法。

但是,如果您希望爲已經在PowerShell會話中進行身份驗證的用戶(您或其他AAD用戶)獲取不記名令牌,那麼如果您使用我編寫的這段代碼,則可以非常輕鬆地完成此操作。

https://gallery.technet.microsoft.com/scriptcenter/Easily-obtain-AccessToken-3ba6e593

基本上它,它從令牌緩存獲取當前令牌,並將其返還給您。這樣你就不必處理clientId,cliendSecret或證書。當我需要以即時方式調用Azure REST API時,我一直都在使用它。

+0

有沒有一種簡單的方法可以使用AAD證書而不使用login-azurermaccount來授權給Azure? –

相關問題