Azure AD中的应用程序注册

时间:2018-04-06 14:33:28

标签: azure-active-directory

我有一些关于手动向应用注册添加权限的问题

  1. 我通过UX为应用添加权限,然后点击“保存”。 之后,这些权限被添加到requiredressourceaccess属性吗?

  2. 之后我点击“授予权限” - >权限被添加到服务主体,对吗?

  3. 之后检查服务主体时,我看到权限是通过管理员同意添加的。这是否也可以征得用户同意?也许这里错了,这不是必需的,但是我想知道为什么这样做的唯一选择是使用全局管理员,然后导致管理员同意。

  4. 还有一些权限声明不需要管理员。

    • 此权利只能通过全局管理员申请(或者我没有通过ux找到正确的方法) - 但它说“需要管理员不”
    • 授予权限后,此权利也会通过管理员同意
    • 添加
  5. 如果我只是执行步骤a并添加权限,请单击“安全”,将权限添加到requiredressourceacces

    • 用户访问应用时,是否必须立即同意该权限。我的应用门户网站?我试图重复,但它没有用。
  6. 最诚挚的问候 托马斯

2 个答案:

答案 0 :(得分:1)

按顺序回答:

  1. 是的,当您在应用注册刀片中使用权限UX时,会将权限添加到应用程序对象上的requiredresource属性。
  2. 正确,点击"授予权限"按钮在后台运行同意,并将同意记录添加到目录中与此应用程序对象相关的服务主体对象。
  3. "授予权限"按钮尝试使用它可以达到的最高同意。如果它被拥有租户管理员角色的人点击,它将获得管理员同意,否则它将做出用户同意(假设没有需要租户管理员的权限)。
  4. 根据#3的答案,用户可同意的权限不需要租户管理员,但如果租户管理员使用“授予权限”按钮,则会自动对目录中的所有用户执行管理员同意。如果您想强制用户同意作为管理员,今天您必须手动点击同意端点(例如在获得任何同意之前登录应用程序)。
  5. 今天,同意系统仅在决定是否自动提示用户时(例如,如果您最初请求用户A和B,用户)检查是否已对该用户(或全局)做出任何同意。同意A和B,然后你添加了烫发C,用户不会自动被重新提示同意,但会提示用户的新用户同意A,B和C)。应用程序负责检测用户未同意增加的权限并强制重新同意呼叫。

答案 1 :(得分:0)

Elisol已经明确了Grant权限,这个答案只是对elisol的一个补充并回复你的第5个问题:

  

如果我只是执行步骤并添加权限,请单击“安全”,权限为   添加到requiredressourceacces。用户现在必须同意吗?   通过访问应用程序时的权限。我的应用门户网站?一世   试图重复,但它没有用。

对于Azure AD v1端点,权限是静态的。一旦用户同意,它将不会改变。因此,我们有提供管理员同意的授予权限。对于你的第5个问题,elisol已经解释得非常好,但我想明确表示旧用户(已经同意过一次)将不会被提升为同意。他/她应该只拥有之前同意的权限。如果您希望用户拥有新权限,应用会通过将prompt=consentprompt=admin_consent添加到授权网址来强制用户重新同意。

如果要动态指定应用所需的权限,可以考虑使用AAD v2端点。有关AAD v1和v2 enpoint之间的区别,请参阅here

我不确定你得到了什么错误消息(这就是我要求你发布有关你的场景的更多细节的原因)。所以,我列出了你可能遇到的两种情况。

1. 如果您发现用户在从Azure门户授予权限后仍需要获得同意:

正如@junnas所述,一个原因可能是您的应用请求包含prompt=consentprompt=admin_consent以强制重新同意。您可以参考his blog尝试修复它。

2. 如果没有足够的许可,您将无法访问您的应用程序(如果没有访问此应用程序可能会出现错误按摩)。

首先,确保您在Azure门户中添加了足够的权限并授予了权限。其次,检查您的请求中的resource是否是正确的WebAPP / API权限。第三,检查是否已定义应用角色并为用户分配不同的角色(它调用基于组的访问控制)。

希望这有帮助。