2

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

  • 据我了解,这些不是经典的“声明”,因为声明会描述“你是谁”,而是“你被允许做什么”。正确的?
  • 但是如何将它们打包到我的 id_token/ 我如何将它们添加到我的有效负载中?

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

谢谢你的帮助!

4

1 回答 1

0

据我了解,这些不是经典的“声明”,因为声明会描述“你是谁”,而是“你被允许做什么”。正确的?

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

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

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

访问令牌和身份令牌都经过数字签名,因此它们不能被调和(至少,不容易)。您不需要自己验证签名,因为它已经由验证/JWT 中间件完成。

于 2016-11-30T20:35:00.043 回答