Azure ad b2c 有什么用';范围';在Azure B2C认证中?

Azure ad b2c 有什么用';范围';在Azure B2C认证中?,azure-ad-b2c,Azure Ad B2c,我不明白Azure B2C中的“范围”应该如何使用。它们与API关联,但与用户无关。我确信我遗漏了一些东西,但我认为与API相关联的东西没有实际用途。我已经根据用户在数据库中的角色使用并实现了基于声明的身份验证 例如:API的普通用户不应有权删除对象,但管理员应有权删除对象。是否有人有一个实际的例子来说明如何使用这些B2C“范围”来限制用户对API的访问?角色和范围为该用户访问控制提供了两个方面 角色(如管理员、成员和来宾)确定是否允许经过身份验证的用户删除对象 作用域(如读取、写入和删除)确定

我不明白Azure B2C中的“范围”应该如何使用。它们与API关联,但与用户无关。我确信我遗漏了一些东西,但我认为与API相关联的东西没有实际用途。我已经根据用户在数据库中的角色使用并实现了基于声明的身份验证

例如:API的普通用户不应有权删除对象,但管理员应有权删除对象。是否有人有一个实际的例子来说明如何使用这些B2C“范围”来限制用户对API的访问?

角色和范围为该用户访问控制提供了两个方面

角色(如
管理员
成员
来宾
)确定是否允许经过身份验证的用户删除对象

作用域(如
读取
写入
删除
)确定授权应用程序是否可以代表授权/同意用户删除对象,前提是该用户通过其角色分配被允许这样做

Azure AD B2C目前不支持管理角色以及将角色分配给用户

但是,它确实支持管理作用域并将其分配给应用程序

它们与API关联,但与用户无关

这是正确的。我喜欢将与API的关联视为定义API的“表面积”。例如,定义了2个作用域

  • 读取
  • write
现在,您可以定义两个应用程序。一个应用程序仅具有读取权限,另一个应用程序具有读取和写入权限

对于一个Web应用程序和一个Web API的常见用例,它没有增加任何价值。对于这种情况,我一直在使用
no op
范围


我已经根据用户在数据库中的角色使用并实现了基于声明的身份验证

您可以使用将“角色”分配给用户。您可以通过进行设置,以确保设置的安全性。你也可以(不过这要复杂得多)

当您为该用户请求访问令牌时,您定义和设置的自定义attirbute将在API中可读以检查权限


评论反馈

如果我升级或降级用户,我需要更改他们在客户端访问的端点(策略)

没有必要改变政策。您将通过Azure AD Graph API更新该用户的自定义属性

我的问题是,我对授权端点(“作用域”)而不是用户的身份验证系统感到困惑

是的,我也是!我认为这可能与产品的用途有关。B2C是关于自助注册、密码重置和与其他IDP(如FB、谷歌等)的联合。当您想要控制用户的权限时,Azure AD可能是一个更好的解决方案。不确定,还在学习

我仍然看不到基于安全性将API分成几个不同部分的实用性。API应该是功能相关服务的集合

您不需要拆分API。您可以拆分使用API的应用程序。见上文



文档参考:,以改进文档。

感谢您提供的信息,但这并不能澄清问题。您如何在实际场景中使用它?如果我升级或降级用户,我需要更改他们在客户端访问的端点(策略)。这有什么用处/实用性?我了解用户的自定义属性是如何工作的,但是使用Graph API会带来巨大的开销。我的问题是,我对授权端点(“作用域”)而不是用户的身份验证系统感到困惑。我仍然看不到基于安全性将API分成几个不同部分的实用性。API应该是功能相关服务的集合。用安全措施将他们分开似乎是不切实际和人为的。我同意——你有过这样的经历吗?我也有同样的问题。@user2294382 nopeThanks,这确实为我澄清了“为什么我需要使用范围”的问题。与创建多个应用程序或只是简单地使用读/写作用域相比,Aha!这一刻我正在努力理解。这并不能回答问题,它只是描述了问题。我希望一些用户具有“删除”访问权限,我不希望其他用户在完全相同的API上具有“删除”访问完全相同的方法的权限。这些政策如何帮助我做到这一点?我已经更新了上述答案,以进一步澄清这一点。