【问题标题】:Adding Application Specific claim after Web API Authentication (Identity Server)在 Web API 身份验证(身份服务器)之后添加特定于应用程序的声明
【发布时间】:2017-06-20 11:50:22
【问题描述】:

我正在将我的 Web 应用程序 OnValidateIdentity 中的应用程序特定声明添加到身份服务器的访问令牌声明中。我正在为每个 API 调用查询数据库的登录用户获取应用程序特定声明。我是否应该将应用程序特定的声明注入 Identity Server 中的令牌中(以减少数据库调用)?

【问题讨论】:

    标签: identityserver3 identityserver4 thinktecture-ident-server thinktecture


    【解决方案1】:

    身份服务器令牌应仅包含有关用户的声明。在收到令牌时查询应用程序特定的声明应该是可以的。如果这是一个问题,您可以引入一个缓存层来减少数据库调用。

    但是,如果您确实有正当理由,则可以打破这些规则并在身份服务器上添加特定于应用程序的声明。 (例如:多个应用共享的设置)。

    【讨论】:

    • 最佳实践是通过引用令牌而不是通过身份令牌在声明中添加应用程序特定数据,这样您可以使用自省端点来内省引用令牌并在 api 级别读取该声明值。您还可以为自省端点添加缓存逻辑。这将允许您在指定的持续时间内缓存内省结果。
    • 好点。但是使用引用令牌会引入与使用应用程序数据库调用类似的开销(网络调用)。参考令牌的有效用例是当您的访问令牌变得更大时,无论是否有用户特定声明或应用程序特定声明。
    • 我应该使用什么来最小化数据库处理?我使用的是 SQL Sever 2014。我应该使用二级 Nhibernate 缓存还是 Redis 缓存?
    • 抱歉,我没有太多关于缓存的专业知识。如果你走这条路,你可能会提出不同的问题。
    • 更正我自己上面的评论,令牌变大不是引用令牌的有效用例。请参考leastprivilege.com/2015/11/25/… 了解用例。但网络开销是您需要关注的问题。
    猜你喜欢
    • 2017-11-26
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2018-07-04
    • 1970-01-01
    • 2020-04-21
    相关资源
    最近更新 更多