asp.net core / openiddict&具有自定义权限的客户端spa授权

时间:2016-11-30 18:55:40

标签: asp.net-core openiddict

我需要一些帮助来理解基于令牌的身份验证的基本内容。 我的设置是一个后端asp.net核心应用程序,带有用于令牌身份验证的openiddict。到目前为止一切运作良好 - 我现在需要添加用户权限。我会有很多(例如用户可以查看xy,用户可以编辑xy,用户可以删除xy,有许多不同的xy组件)。到目前为止Backend运行良好,我现在的问题是:如何通过令牌将这些权限发送到我的客户端应用程序..

  • 据我所知,这些不是经典的"声称"索赔将描述"谁"你宁愿"你被允许做什么" 。对?
  • 但是如何将它们打包到我的id_token /如何将它们添加到我的有效负载中?

  • 第二件事:在我的情况下,我是否需要验证令牌(签名)?每个Api请求都在服务器端验证,所以基本上我不需要关心我的客户端权限是否适应,对吧? (因为它们仅用于UI显示)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

据我所知,这些不是经典的"索赔"索赔将描述"谁"你宁愿"你被允许做什么" 。正确?

理论上,没有任何东西可以阻止您将权限表示为声明,就像您使用角色或任何其他声明一样。在实践中,它很少是最好的方法,因为用户可以做的动作的数量通常很重要(并且通常是无限的:用户A可以更新产品124吗?还有这个其他产品?)。

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

  

第二件事:在我的情况下,我是否需要验证令牌(签名)?每个Api请求都在服务器端验证,所以基本上我不需要关心我的客户端权限是否适应,对吧? (因为它们仅用于UI显示)

访问令牌和身份令牌都经过数字签名,因此无法对其进行调整(至少不容易)。您不需要自己验证签名,因为验证/ JWT中间件已经完成了签名。