c# - 从代码中刷新客户端的身份 token

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

我使用带有 asp.net mvc 后端的fine-uploader将文件直接上传到azure blob存储。 asp.net-server 用作 azure-signature-endpoint(sas)。这一切都通过 identityserver3 进行保护,但问题来了:identity_tokens 生命周期 设置为 5 分钟(默认)。我希望 SAS 端点仅被称为授权的。因此用户只能访问自己的数据。但当我上传运行 5 分钟后,它就中断了。当然,因为它未经授权,并且它从身份服务器返回登录页面(当然,精细 uploader 无法处理)。

解决这个问题很容易,可以将 token 的生命周期设置为更高的值(但这并不可靠,因为上传可能需要数小时或数天),或者禁用生命周期(是的,可以。但我想生命周期有存在的理由)。

所以我的两个想法是:

  1. 仅授权用户一次(当他开始下载时)
  2. 或者在每次生成签名时通过代码刷新 token 。

第一种方法

我可以设置一个 bool 值,例如用户已授权,如果设置了此 bool 值,则跳过授权并返回签名,或者我如何实现此目的

第二种方法

我该怎么做?

最佳答案

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

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

我相信 IdentityServer 的示例存储库中都有这两个示例。

Samples repo link

关于c# - 从代码中刷新客户端的身份 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39593468/

相关文章:

c# - 如何显示读取文件和写入数据库的进度

azure - TeamsBot 没有对话引用

c# - Xamarin 中的 Android 开发 - 错误

c# - WCF 模拟不是模拟管理员

c# - 这个静态字典字段线程安全吗?

javascript - 如何将 json ajax 用于谷歌地图标记

javascript - 无需清除缓存即可管理内容

azure - 我如何知道对我的机器人的请求源自 Teams?

azure - Azure 是否支持构建 F# 3.0/VS2012 项目?

c# - 这是 string.TrimEnd 中的错误吗?