2

要在Azure中運行應用程序,我需要在Azure AD中創建應用程序以及相應的服務主體。然後我的應用程序對這個App/Principal對進行身份驗證。要進行身份驗證,我可以在應用程序註冊中創建應用程序密鑰,或者我可以在服務主體中創建密碼(以及其他選項)。從實踐的角度來看,有什麼不同?使用AAD應用程序密鑰和服務主體密碼之間的身份驗證區別

例如,運行此代碼完全相同的(從外)$鍵是否是應用程序的關鍵或服務主體的密碼:

$key = ConvertTo-SecureString $authKeyOrPassword -AsPlainText -Force 
    $cred = New-Object System.Management.Automation.PSCredential($appID, $key) 
    Add-AzureRmAccount -Credential $cred -TenantId $tenantID -ServicePrincipal 

什麼時候應該對應用程序進行身份驗證,而當我應該使用服務負責人嗎?

回答

1

如果您想了解Azure AD應用程序密鑰和服務原理密碼之間的區別,最好了解應用程序和服務主體之間的關係。應用對象和服務主體對象:

  1. 當您註冊在Azure的門戶網站的Azure的AD應用程序,在您的Azure的AD租戶創建兩個對象。

  2. 將應用程序對象視爲您的應用程序的全局表示,以便在所有租戶中使用,並將服務主體作爲特定租戶中使用的本地表示形式。應用程序對象充當從中派生的公共和默認屬性的模板,用於創建相應的服務主體對象。

  3. 因此,一個應用程序對象具有1:與所述軟件應用程序1的關係,並以1:與.A服務主體必須在每個租戶創建其相應的服務主體(多個)對象多的關係,在使用該應用程序,使其能夠爲登錄和/或訪問由租戶保障的資源建立身份。

示例圖

enter image description here

摘要

現在,我們可以知道Azure的AD應用程序鍵之間的差異,服務原則密碼。它們屬於不同的對象。密碼將與服務主體相關聯。這僅適用於應用程序租戶登錄天藍色。但是,您可以提供帶有應用程序標識的應用程序密鑰值,以作爲具有所有租戶的應用程序登錄。

要查看有關Azure Active Directory中的應用程序和服務主體對象的更多詳細信息,請參閱this document

+0

謝謝!那麼下面的推論是否正確? 1)如果我想鎖定給定進程的權限,是否最好通過它自己的服務主體而不是通過應用程序密鑰進行身份驗證? 2)應用程序密鑰的主要目的是爲其他租戶中的服務主體提供一種方法來嚮應用程序進行身份驗證?如果是這樣,我認爲這將是一個誤用的應用程序密鑰,直接用於身份驗證(如我在上面的代碼示例)。如果不是,它的目的是什麼? – jschmitter

+0

嗨,@jschmitter,爲您額外的問題,我有這方面的意見:1)我認爲這是針對不同的場景沒有權限。 2)如果你想使用的服務原則,你可以爲你的應用程序的關鍵或not.When您想您的應用程序配置爲客戶端應用程序訪問WebAPIs,你需要的應用程序鍵。 –

+0

這個文件也可能是有用的you.https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-integrating-applications –

相關問題