要在 Azure 中运行应用程序,我需要在 Azure AD 中创建应用程序和相应的服务主体。然后我的应用程序针对此应用程序/主体对进行身份验证。为了进行身份验证,我可以在应用程序注册中创建应用程序密钥,或者可以在服务主体中创建密码(以及其他选项)。从实际角度来看有什么区别?
例如,无论 $key 是应用程序的密钥还是服务主体的密码,此代码的运行完全相同(从外部):
$key = ConvertTo-SecureString $authKeyOrPassword -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($appID, $key)
Add-AzureRmAccount -Credential $cred -TenantId $tenantID -ServicePrincipal
我什么时候应该对应用程序进行身份验证,什么时候应该使用服务主体?
首先,让我解释一下为什么它在 Azure AD 中同时具有应用程序和服务主体。以下是 Vittorio Bertocci 的 Mordent Authentication with Azure AD for Web App 的解释。
Azure AD 定义了一个新实体,即应用程序,其目的是
将应用程序描述为抽象实体:模板,如果您
将要。作为开发人员,您使用应用程序。在部署时
给定的 Application 对象可以用作创建一个的蓝图
ServicePrincipal 代表应用程序的具体实例
一个目录。 ServicePrincipal 用于定义什么
该应用程序实际上可以在该特定目标目录中执行操作,谁可以使用
它可以访问哪些资源,等等。
请容忍我一下
再过一会儿,抽象部分就快结束了。主要途径是通过
Azure AD 从应用程序创建 ServicePrincipal 是
同意。以下是流程的简化描述:假设您
在目录 A 中创建一个 Application 对象,提供所有
到目前为止,我们已经在前面的章节中讨论了协议坐标。说
租户 B 的用户导航到应用程序的页面并触发
身份验证流程。 Azure AD 对来自 B 的用户进行身份验证
它的主目录 B。这样做时,它发现没有
B 中应用程序的 ServicePrincipal;因此,它会提示用户
他或她是否同意该应用程序访问
目录 B(稍后您将看到其容量)。如果用户授予
同意后,Azure AD 使用 A 中的应用程序对象作为蓝图
在 B 中创建一个 ServicePrincipal。除此之外,B 还记录当前用户同意使用此应用程序(稍后会提供大量详细信息)。完成后,用户会收到用于访问应用程序的令牌。
如果您想了解Azure AD应用程序密钥和服务主体密码之间的区别,您最好了解应用程序和服务主体的关系。我将在这里复制并粘贴一些摘录文档的这一页 https://learn.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals
-
When you register an Azure AD application in the Azure portal, two objects are created in your Azure AD tenant: an application object, and a service principal object.
-
Consider the application object as the global representation of your application for use across all tenants, and the service principal as the local representation for use in a specific tenant. The application object serves as the template from which common and default properties are derived for use in creating corresponding service principal objects.
-
An application object therefore has a 1:1 relationship with the software application, and a 1:many relationships with its corresponding service principal object(s).A service principal must be created in each tenant where the application is used, enabling it to establish an identity for sign-in and/or access to resources being secured by the tenant.
示例图
Summary
现在,我们可以知道Azure AD应用程序密钥和服务主体密码之间的区别。它们属于不同的对象。与服务主体关联的密码。这只是为了应用程序租户登录azure。但是,您可以提供应用程序键值和应用程序 ID,以作为所有租户的应用程序登录。
要查看有关Azure Active Directory中的应用程序和服务主体对象的更多详细信息,您可以参考这个文件 https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)