我有一个已在Azure AD中注册的应用程序。我想使用增量同意,以便用户不必预先同意所有权限。我试图使用ConfidentialClientApplication
类生成URL。这可以正常工作,但是之后,用户将被重定向回/signin-oidc
。可以,因为我可以在初始重定向中提供一个URL,以使用户回到需要的位置。
问题是/signin-oidc
端点抛出一个错误,指示未找到相关ID。我假设它正在cookie中寻找该值。我从创建cookie的路径开始,但是对我来说似乎很脆弱(如果OIDC库更改了它在以后版本中创建cookie的方式,那将会是什么)。我觉得我应该能够返回特定的IActionResult
(或类似内容),以向OIDC中间件发出信号,表明该应用需要用户的其他权限(OIDC中间件将发出重定向并正确处理Azure的结果广告)。
我走错了路吗?我在网上找不到任何好的例子。
我终于找到了一个很好的例子。简短的答案是返回ChallengeResult
。使用带有Controller
对象的重载(如果在AuthenticationProperties
中,则为方法;在其他位置,则为构造器)。
最重要的部分是将SetParameter
与“ scope”的键和值一起使用,该值是您需要的范围的列表。
在此示例中,作者将逻辑包装在一个属性内:https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/Microsoft.Identity.Web/AuthorizeForScopesAttribute.cs