长期运行任务的访问令牌

时间:2019-10-07 08:32:09

标签: identityserver4 openid-connect refresh-token

假设是这样

一个前端应用程序使用隐式流请求身份验证,并且用户已登录。该应用程序为用户提供了创建任务/作业的功能,该任务/作业应在将来的预定时间代表用户执行许多操作。这可能也是一项耗时数小时(甚至数天)的长期任务。前端应用程序具有自己的客户端ID(具有隐式流),而执行计划任务的服务具有单独的客户端ID(和秘密)。

问题:

  • 前端应用程序应将什么传递给计划任务,以便执行计划任务的服务可以验证为原始用户?

  • 假定任务应该使用刷新令牌运行,以便在需要时可以获取新的访问令牌,那么如何才能首先获得刷新令牌?前端应用程序无法通过第一个,因为隐式流中不支持刷新令牌,即使已支持刷新令牌,也会将其发行给错误的客户端。

1 个答案:

答案 0 :(得分:0)

一个好主意是看一下委派。通过这种概念,您的服务可以检索一个新的令牌,该令牌将自己标识为用户,但具有标识该服务的特殊“行为”声明。 https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16

身份服务器在版本4中不再具有此默认值,但是那里有一些有关如何重新添加它的示例。这种情况非常简单,因为您已经说过您可以信任自己的服务,因此您真正需要的全部告诉IdentityServer允许clientid模仿任何人 这是一个示例https://www.daimto.com/identity-server-4-user-delegation/