【问题标题】:How to control/set permissions for a single user when using Azure AD B2C使用 Azure AD B2C 时如何控制/设置单个用户的权限
【发布时间】:2018-10-12 04:49:38
【问题描述】:

我有 1 个使用另一个 WebApi 的 SPA 应用程序。 (ASP.NET Core) 两者都在 Azure 中运行,我能够使用 OAuth 2.0 隐式流针对 Azure AD B2C 对用户进行身份验证

现在我问自己如何控制单个用户的权限。 (删除、阅读等)我必须处理索赔吗?我是否必须利用服务器端的图形 API 来检查用户是否具有特定权限?我可以使用范围吗?我在哪里可以设置 User Scope 关系?

我发现了几个关于 SO 的问题,但我不知道应该如何以正确的方式完成它?我目前的理解是,我向身份验证提供者询问某些范围,然后我将获得具有此范围的令牌,然后可以通过 API 进行检查。但是如何管理哪些用户可以请求哪些范围?

我真的很难理解 OAuth2 和权限。希望有人可以在这里帮助我。

【问题讨论】:

  • 嗨,@VSDekar。您可以使用 Scope 在令牌中定义自定义权限。例如。当您的 Web API 使用 MSAL 验证 JWT 令牌时,它还将验证令牌的范围。
  • 我在哪里设置用户可以要求的范围?
  • 对不起,我的误解。对于一个特定的用户,目前还不可能。因为 Azure AD B2C 不支持应用程序角色。

标签: azure oauth-2.0 azure-active-directory azure-ad-b2c


【解决方案1】:

很遗憾,对于某个特定用户,您无法为该用户分配权限/范围。

因为 Azure AD B2C 不支持应用程序角色。通常,Azure AD B2C 是供所有用户使用他们的帐户访问您的应用程序的。甚至 Azure AD B2C 也可以让你存储和管理用户,但它不能将不同的范围/权限分配给不同的用户。多个范围是授予资源的权限。多个授予的权限将用空格分隔。不是为用户分配访问权限。

如果这对您很重要,您可以在this Uservoice Page 中支持这个想法。 Azure 团队将对其进行审核。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    您可以通过创建String 类型的a custom attribute 来实现这一点,该String 存储用户角色的逗号或空格分隔列表。

    然后,您可以在 ID 和访问令牌中发出此自定义属性,或使用 Azure AD Graph API 读取它。

    【讨论】:

    • 如何管理对自定义属性的访问?如果用户有权编辑他们自己的这些属性,则不能用于存储权限...
    • 嗨@keft Azure AD B2C 颁发的 ID 和访问令牌不允许访问这些用户属性。
    猜你喜欢
    • 1970-01-01
    • 2020-05-09
    • 2021-08-23
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多