【发布时间】:2015-06-25 07:26:36
【问题描述】:
我有一个生产中的 Windows Azure AD 应用程序,它通过 OAuth2 对用户进行身份验证。目前,它只请求一项委派权限——“启用登录和读取用户的个人资料”。我正在向我们的应用程序添加一项新功能,该功能将使用 Office 365 API,这显然需要应用程序请求额外的委派权限。
我已经更新了我们的应用清单,同意我们的应用的新用户同时授予登录和 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 实现的广告。
是否有某种方式强制应用清单中配置的委派权限为强制性,即如果未授予这些委派权限,登录将无法完成?
【问题讨论】:
标签: ms-office office365 azure-active-directory