azure-active-directory - 确定 Azure AD 应用注册所需的管理员权限

标签 azure-active-directory azure-service-fabric

如何找出阻止用户登录 Azure AD 应用程序的管理员权限?

我正在 Azure AD 门户中设置应用注册以与我的 Service Fabric 群集一起使用。应用程序注册进行基本身份验证,并且只配置了一个必需的权限:登录并读取用户配置文件(不需要管理员权限)。

我的租户将“用户可以同意代表他们访问公司数据的应用程序”设置为"is",所以不是这样。

另外,/authorize request 没有任何资源参数,因此它隐式请求我配置的权限:Azure AD 的登录并读取用户配置文件。

但是,当非管理员用户尝试对其进行签名时,我仍然收到错误消息:

AADSTS90094: The grant requires admin permission



AADSTS90094: The grant requires admin permission Error screenshot

Required permissions only Windows Azure Active Directory screenshot

Required permission details only non-admin Sign in and read user profile screenshot

Enterprise apps - Users can consent to apps accessing companty data on their behalf - Yes screenshot

最佳答案

我重现了这个场景,这就是我观察到的。找到了解决方法,希望有帮助。

首先,我使用 here 中描述的步骤创建了一个使用 AAD 身份验证保护的 Service Fabric (SF) 集群。 ,使用我不是全局管理员的 AAD 租户。

然后我尝试登录 Service Fabric Explorer (SFX),但出现此错误:

AADSTS50105: The signed in user is not assigned to a role for the application 'f8c79129-deb7-4a21-a6e0-ec29e88298ef'



这是意料之中的,因为用户 must be assigned to a role (Admin 或 ReadOnly)在代表集群的 SF 应用程序中。所以我转到 AAD > 企业应用程序 > 找到我的集群应用程序,并在用户和组下我将自己添加到管理员角色。请注意,普通用户可以管理用户拥有的应用程序的角色这一事实是新事物,它在一个月左右可用——在此之前,普通用户无法管理应用程序的角色。

然后我尝试再次登录到 SFX,但出现了不同的错误:

AADSTS65005: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration. Client app ID: f8c79129-deb7-4a21-a6e0-ec29e88298ef. Resource value from request: . Resource app ID: 00000002-0000-0000-c000-000000000000. List of valid resources from app registration: .



00000002-0000-0000-c000-000000000000 是 Windows Azure Active Directory。出于某种原因,SetupApplications.ps1 没有将登录和读取用户配置文件权限分配给 SF 集群应用程序。所以我编辑了应用程序并分配了该权限,就像您在打印屏幕上显示的那样。请注意,SetupApplications.ps1 有一个参数 AddResourceAccess(文档中未提及)用于添加该权限,不确定为什么默认情况下不添加它。当您以全局管理员身份运行 SetupApplications.ps1 时,也许不需要它,并且脚本/文档假定您是全局管理员。

然后我尝试再次登录 SFX,但遇到了与您观察到的相同的错误:

AADSTS90094: The grant requires admin permission.



因此,我检查了 AAD > Enterprise Applications > 下的 SF 应用程序,找到了 SF 集群应用程序 > 属性。 需要用户分配 配置为"is"。我将其更改为“否”并尝试登录 SFX。这次运行正常,我可以同意并访问 SFX 控制台。然后我再次将所需的用户分配更改为"is"。

人们可能会争论 SF 应用程序是否真的需要需要用户分配 > 是的,因为无论如何如果用户没有分配到管理员或只读角色,SFX 将尝试回退到客户端证书身份验证。

无论哪种方式,AAD 行为都令人困惑。至少,错误应该更具描述性并指向用户分配配置。也许当前的行为与我之前提到的有关,即普通用户现在可以管理角色。也许行为正在得到改善。

关于azure-active-directory - 确定 Azure AD 应用注册所需的管理员权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50376635/

相关文章:

azure - 如何使用 Azure Active Directory 为外部应用程序设置客户端凭据流

azure - 购买 Microsoft 365 后下一步做什么?

javascript - ADAL.js 无法在 Microsoft 个人帐户中运行

azure - 在 Azure 上创建 Service Fabric 群集失败,错误代码为 "VMInstanceCountAllowsBetterReliabilityLevel"

azure - 尝试访问 Service Fabric 服务时出现 ERR_CONNECTION_TIMED_OUT

azure-service-fabric - 找不到 Service Fabric : The EntryPoint Blah. exe

Azure DevOps 管道无法复制到 Azure 存储

azure - 获取AD组的创建时间戳

c# - 如何从 C# 执行 Service Fabric Powershell 命令?

c# - IReliableDictionary 上的 Linq 查询