【问题标题】:differences between aad application password and service principal passwordaad 应用程序密码和服务主体密码之间的区别
【发布时间】:2021-07-17 04:45:46
【问题描述】:

在创建 AAD 应用程序时,我们可以为应用程序创建客户端密码。因此,我了解客户端机密是针对应用程序的。作为对比,我们还可以为同一个应用程序创建许多服务主体。每个服务主体都可以使用az ad sp create-for-rbac --name ServicePrincipalName 拥有自己的密码。但我没有找到在 Azure 门户上创建此类服务主体密码的方法。所以我想知道这两种凭据是否指的是同一件事。

【问题讨论】:

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


    【解决方案1】:

    这两个凭证实际上是不同的东西。

    应用程序上的凭证是最常见的凭证,也是推荐用于几乎所有用途的凭证。它是一种单一凭证,可让您在一个租户中运行的代码进行身份验证并访问其他租户中的资源,而该应用程序已被许可/添加。

    servicePrincipal 上的凭据仅用于在 serviceprincipal 所在的特定租户中获取授予应用程序的资源的访问权限。这适用于非常有限的场景,不推荐用于一般用途。

    【讨论】:

    • 使用应用程序客户端密钥和服务主体凭据进行测试。你在这两种情况下都是正确的。
    【解决方案2】:

    据我所知,您无法在门户中创建服务主体凭据。您必须使用您描述的 CLI 方法或 PowerShell 命令。

    门户中的内容严格用于创建客户端机密,以与 OAuth 客户端凭据流一起使用,以获得作为受信任客户端的令牌。

    https://datatracker.ietf.org/doc/html/rfc6749#section-4.4 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow

    另一方面,服务主体更像是 Azure 中的域用户。它可以分配给订阅、资源组和资源中的 RBAC 角色。这对于以该身份运行应用服务并授予该帐户对存储帐户、保险库等的访问权限非常方便。

    【讨论】:

    • 我使用应用程序客户端密钥进行了测试,以访问密钥库和 blob 存储,两者都运行良好。所以从这个意义上说,客户端密码不仅用于 Oauth 客户端凭据流。
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多