【问题标题】:Perform actions offline for users authenticated with IdentityServer3为通过 IdentityServer3 进行身份验证的用户执行脱机操作
【发布时间】:2016-07-04 16:42:58
【问题描述】:

在我的项目中,我将 IdentityServer3 与多个外部身份提供程序(通过 ADFS)一起使用,并且一切正常。但是,我想通过计划任务在后台代表用户执行一些操作 - 当他们离线时。

在我切换到 OpenId Connect 之前,我只有本地用户,只是为用户创建了一个 Principal 并“模拟”了他们。现在我有外部用户,我想替换此功能,并且我相信使用刷新令牌是正确的方法。

我计划在每次用户访问网站时将每个用户的刷新令牌安全地存储在我们的数据库中。然后,刷新令牌将用于在计划任务运行时获取有效的访问令牌,并使用它来调用后端 webapi。这将实现我需要的模拟,并处理外部用户的新问题,我不知道他们何时从外部用户存储中被禁用/删除,我不想让计划任务仍然在系统中运行,因为它们的链接帐户仍然有效,例如如果他们的访问权限被删除,则存储的刷新令牌最终将过期并且计划任务将停止运行。

这是处理离线操作的最佳/正确方法吗?我担心我已经要求用户必须定期登录以确保我们存储了有效的刷新令牌。或者有没有更好的方法可以无限期地启用离线访问但仍然安全。

【问题讨论】:

    标签: openid-connect identityserver3


    【解决方案1】:

    刷新令牌是一种无需用户交互即可长期访问 API 的技术。这似乎满足您的要求。

    【讨论】:

    • 如果我想避免刷新令牌,我只需要一个访问令牌来传递到 webapi 后端,我可以使用服务帐户使用资源所有者密码流登录,然后作为另一个用户(使用自定义授权?)。我真的只需要为我正在为其运行任务的用户构建的 JWT 访问令牌——我不需要来自他们的 IdP 的任何声明,只需要我从我们自己的数据库中添加的那些。这听起来像是我需要的,但我还不熟悉 IdSvr3 中的自定义授权,但示例看起来我可以将其用作一种模拟?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2019-09-18
    • 1970-01-01
    • 2020-01-03
    • 2016-04-16
    • 2012-11-23
    • 2017-07-03
    相关资源
    最近更新 更多