从代码中刷新客户端的身份令牌

时间:2016-09-20 11:57:48

标签: c# asp.net-mvc azure fine-uploader identityserver3

我正在使用带有asp.net mvc后端的精细上传器将文件直接上传到azure blob-storage。 asp.net-server 用作azure-signature-endpoint(sas)。这都是通过 identityserver3 保护的,问题出现了: identity_tokens lifetime 设置为5分钟(默认情况下)。我希望SAS端点只能被授权。因此用户只能访问自己的数据。但是在我上传了5分钟后,它就会中断。当然,因为它没有被授权,它从身份服务器返回登录页面(当然,精细上传者无法处理)。

通过将令牌的生命周期设置为更高的值来解决这个问题会很容易(但是由于上传可能需要数小时或数天,这是不可靠的),或者禁用生命周期(是的会起作用。但我猜终生有理由存在。)

所以我的2个想法是:

  1. 只授权用户一次(当他开始下载时)
  2. 或每次生成签名时按代码刷新令牌。
  3. 第一种方法

    我可以设置一个布尔值,例如用户是否已获得授权,如果设置了此布尔值,则只需跳过授权并返回签名或我如何实现此

    第二种方法

    我该怎么做?

1 个答案:

答案 0 :(得分:2)

不要使用id令牌进行API访问,而是使用访问令牌。访问令牌用于资源(API),而id_tokens纯粹用于身份验证。 id_token仅用于为RP提供了解用户是谁的方法 - 因此不需要长时间跨度。它仅用于转换为用户会话(cookie / principal)。

使用访问令牌,您可以使用多种方法在客户端保留有效令牌;通过使用客户端凭据流或使用刷新令牌方法获取新的。

我相信在IdentityServer的样本库中都有两个样本。

Samples repo link