微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AuthorizeForScopesAttribute 的内联等效项

如何解决AuthorizeForScopesAttribute 的内联等效项

我们一直在开发一个控制器,例如使用 Microsoft.Identity.Web.AuthorizeforScopes 属性作为控制器

[AuthorizeforScopes(Scopes = new string[]
    {
    "https://ourdomain.co.uk/us.theapi/access",})]
public class browseController : Controller

直到我们现在这方法都运行良好。我们需要将 Web api 集部署到生产环境中。 apis 将有一个新的 Azure AD 应用程序注册用于生产。这意味着我们需要在 Azure 门户的“公开 API”部分中“添加范围”。新的 Azure AD 应用程序有一个新的应用程序 ID URI(Azure 不允许它使用开发应用程序注册使用的那个)。

该应用 ID URI 构成了范围字符串的一部分,因此如果我们的新应用 ID 是“https://ourdomain.co.uk/us.prod-theapi/”并且范围仍然是“访问”然后代码中的属性需要是“https://ourdomain.co.uk/us.prod-theapi/”,但这对开发没有好处。

是否有一种检查范围的方法,其结果与通过 AuthorizeforScopes 属性获得的结果相似但不使用属性?我们需要能够驱动配置属性使用的范围字符串

解决方法

基于 source code,您实际上可以定义配置节键,而不是内联定义作用域。

例如:

[AuthorizeForScopes(ScopeKeySection = "Auth:Scopes")]
public class BrowseController : Controller

在 appsettings JSON 中:

{
  "Auth": {
    "Scopes": "https://ourdomain.co.uk/us.theapi/access"
  }
}

然后,您可以根据环境或通过环境变量等为该配置值设置不同的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。