使用AAD app密钥和Service Principal Password之间的身份验证差异

时间:2017-10-10 21:53:52

标签: azure azure-active-directory azure-authentication azure-security service-principal

要在Azure中运行应用程序,我需要在Azure AD中创建一个应用程序和相应的服务主体。然后我的应用程序对此App / Principal对进行身份验证。要进行身份验证,我可以在App注册中创建应用程序密钥,或者我可以在Service Principal中创建密码(以及其他选项)。从实际的角度来看有什么不同?

例如,无论$ key是App的密钥还是Service Principal的密码,此代码都(从外部)运行完全相同:

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

我应该何时对应用进行身份验证,何时应该使用服务主体?

1 个答案:

答案 0 :(得分:3)

首先,让我解释为什么它在Azure AD中同时具有应用程序和服务主体。以下是Vittorio Bertocci对Azure App for Web App的Mordent Authentication的解释。

  

Azure AD定义了一个新实体,即应用程序   将应用程序描述为抽象实体:模板,如果您   将。作为开发人员,您使用应用程序。在部署时间a   给定的Application对象可以用作创建的蓝图   ServicePrincipal表示应用程序的具体实例   一个目录。这就是用于定义内容的ServicePrincipal   该应用程序实际上可以在该特定目标目录中执行,谁可以使用   它,它可以访问哪些资源,等等。

     

忍受我只是一个   不久,抽象部分几乎结束了。主要方式通过   Azure AD从应用程序创建ServicePrincipal   同意。这是流程的简化描述:说你   在目录A中创建一个Application对象,提供所有   我们在前面章节中讨论过的协议坐标。说   租户B的用户导航到应用程序的页面和触发器   身份验证流程。 Azure AD通过B对用户进行身份验证   它的主目录,B。这样做,它看到没有   B中应用程序的ServicePrincipal;因此,它提示用户   是否他或她想同意该应用程序访问该应用程序   目录B(稍后你将看到它的容量)。如果用户授予   同意,Azure AD使用A中的Application对象作为蓝图   在B中创建ServicePrincipal。与此同时,B记录当前用户同意使用此应用程序(稍后会考虑很多细节)。完成后,用户会收到一个用于访问应用程序的令牌。

如果您想了解Azure AD App密钥和服务原则密码之间的区别,您最好知道应用程序和服务主体之间的关系。我将复制并粘贴this page of the documentation

中的一些摘录
  1.   

    在Azure门户中注册Azure AD应用程序时,在Azure AD租户中创建了两个对象:应用程序对象和服务主体对象。

  2.   

    将应用程序对象视为应用程序的全局表示形式,以便在所有租户中使用,并将服务主体视为在特定租户中使用的本地表示形式。应用程序对象用作模板导出哪些common和default属性以用于创建相应的服务主体对象。

  3.   

    因此,应用程序对象与软件应用程序具有1:1的关系,并且与其对应的服务主体对象具有1:多的关系。必须在使用该应用程序的每个租户中创建服务主体,从而启用它为登录和/或访问由租户保护的资源建立身份。

  4. 示例图

      

    enter image description here

    <强>摘要

    现在,我们可以了解Azure AD App密钥和服务原则密码之间的区别。它们属于不同的对象。与服务主体关联的密码。这仅适用于应用程序租户登录azure。但是,您可以使用应用程序ID提供App键值,以便作为具有所有租户的应用程序登录。

    要在Azure Active Directory中查看有关应用程序和服务主体对象的更多详细信息,可以参考this document