asp.net Core / Openiddict & Client SPA 使用自定义权限进行授权



我需要一些帮助,以了解基于令牌的身份验证的一两个基本事项。我的设置是带有代币auth的OpenIDDICT的后端ASP.NET核心应用程序。到目前为止,这一切都很好 - 我现在需要添加用户渗透。我将有很多(例如,用户可以查看XY,用户可以编辑XY,用户可以删除XY,并且具有许多不同的XY-Components)。到目前为止,后端运行良好,我的问题现在是:如何通过令牌到我的客户端应用程序获得这些权限。

  • 据我所知,这些不是经典的"主张",因为主张会描述"谁是"你是"你被允许做的事情"。正确的?
  • 但是如何将它们包装到我的ID_Token/如何将它们添加到我的有效载荷中?

  • 第二件事:在我的情况下,我需要验证令牌(签名)吗?服务器端验证的每一个API重新要求,因此,基本上我不需要在客户端权限是否得到纠正,对吗?(因为它们仅用于UI-Display的目的)

感谢您的帮助!

据我了解,

这些不是经典的"主张",因为主张会描述"谁是"你是你被允许做的事情"。对吗?

从理论上讲,没有什么能阻止您将权限表示为主张,就像您在角色或任何其他主张中所做的那样。在实践中,这很少是最好的方法,因为用户可以执行的操作数量通常很重要(而且通常是无限的:用户可以更新产品124吗?和其他产品?)。

可能的替代方法是在不允许用户执行特定操作时捕获API返回的403响应,以便您可以显示足够的错误消息。另一个是创建一个API端点,该端点动态确定是否允许用户根据您自己的策略执行操作。

第二件事:在我的情况下,我需要验证令牌(签名)吗?服务器端验证的每一个API重新要求,因此,基本上我不需要在客户端权限是否得到纠正,对吗?(因为它们仅用于UI-Display)

访问令牌和身份代币都经过数字签名,因此无法与其进行纠正(至少,不容易)。您不需要自己验证签名,因为它已经通过验证/JWT中间件来完成。

最新更新