有没有办法在 OpenIddict 中动态加载声明?

问题描述

我们有一个应用程序,其中有很多权限作为声明。在用户登录时加载这些并将它们设置为令牌的一部分会使令牌变得非常大。

我的想法是找到某种加载方式,并在每次调用时动态地向令牌添加声明(也许从缓存中以加快速度)。

我知道 openiddict 提供了一堆服务器事件,我想知道其中一个是否适合放置此逻辑。

还有其他方法可以实现吗?

我们的 API 设计使用了许多权限,我不希望每次都加载它们并将代码放入每个 api 中来实现这一点,因此向主体添加声明似乎是合乎逻辑的。

希望被指出正确的方向。

解决方法

我们的 API 设计使用了许多权限,我不希望每次都加载它们并将代码放入每个 api 中来实现这一点,因此向主体添加声明似乎是合乎逻辑的。

那么您目前拥有的几乎就是您最好的选择。您还可以启用引用访问令牌以将实际令牌负载存储在数据库中,并使返回给客户端的令牌更小。

如果您愿意在 API 级别这样做,您可以使用声明转换机制来即时添加声明:https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.authentication.iclaimstransformation?view=aspnetcore-5.0