向现有授权添加额外的 Windows Azure AD 委派权限

Adding an additional Windows Azure AD delegated permission to an existing grant

我有一个生产中的 Windows Azure AD 应用程序,它通过 OAuth2 对用户进行身份验证。目前,它只请求一个委托权限 - "Enable sign on and read users' profiles"。我正在向我们的应用程序添加一项新功能,它将使用 Office 365 API(s),这显然需要应用程序请求额外的委派权限。

我更新了我们的应用程序清单,同意我们应用程序的新用户同时授予登录和 Office 365 委派权限,令牌端点响应 scope 参数为 UserProfile.Read Mail.Read 正如预期的那样。但是,对于仅在请求登录委派权限时同意我们应用程序的现有用户,Windows Azure AD 不会提示他们在下次登录时授予额外的 Office 365 委派权限。对于这些用户,令牌端点响应 scope 参数仍然作为 UserProfile.Read 通过,即仅登录委托权限。

我知道我可以将 ?prompt=consent 传递给 https://login.microsoftonline.com/common/oauth2/authorize,这将强制用户授予所有请求的委派权限,但这是一个有点大锤的方法,因为它会要求每个人,每次,当我想要做的就是在请求和授予的委托权限之间存在差异时捕获这些用户。它在我试图维护的 SSO 体验中表现不佳。

使用 Google OAuth,范围在授权请求中作为查询参数传递,并且系统会提示用户同意任何请求的尚未授予的范围。对于所有范围的新用户,对于新添加的范围的现有用户,之后不需要额外的同意,因为所有范围都将被授予 - 这正是我试图通过 Windows 天蓝色广告。

有没有什么方法可以将应用程序清单中配置的委派权限强制执行为强制性的,即如果没有授予这些委派权限,登录将无法完成?

Azure 人员正在努力在每个请求中实现传递范围。同时,他们给出的指导是您不要在每个请求中都包含 prompt=consent。相反,如果你得到一个 Unauthorized 错误,那么你会退回到用 prompt=consent.

重新请求