在桌面应用程序中为OAuth2授权代码流刷新令牌

ttp71kqs  于 2022-11-28  发布在  其他
关注(0)|答案(1)|浏览(137)

我想在我的.net WinForms应用程序中使用由JWT标记关闭的API。可以使用授权代码流+ PKCE从标识提供程序接收此类标记。我以前在Web应用程序中使用过此类流,我知道如何请求代码,在访问标记上交换代码,我使用静默刷新方法刷新访问标记。对于我的clientId,我无法使用刷新标记。因此,我有点困惑如何在Winforms应用程序中实现刷新令牌。它肯定是我需要打开登录页面,让客户输入凭据。然后我猜我需要从重定向URL捕获代码。似乎我需要使用回送IP地址作为重定向URL,并在应用程序中捕获请求。但如何设置刷新过程,我不知道。请提供建议或添加示例链接。

qnakjoqk

qnakjoqk1#

对于桌面应用程序,您应该遵循RFC8252中的建议。如果不刷新令牌,您将遇到可用性问题。例如,访问令牌在15或30分钟后过期,然后用户将重新打开系统浏览器。
这对于一个高安全性的应用程序来说可能没什么问题,比如银行,但是对于大多数应用程序来说,这不是你想要的。从安全的Angular 来看,诸如长生存期访问令牌的替代方案是不好的,因为长生存期的值会在每个API请求中公开。
你也不能通过隐藏的iframe来使用静默续订,因为你对系统浏览器没有太多的控制权。你只能通过执行URL来打开它。
所以你有这些主要的选择,也许你可以向利益相关者解释权衡。你不能在代码中实现一个变通方案:

  • 无刷新令牌,可用性欠佳
  • 使用了刷新标记,因此在公共客户端中使用了更长时间的API凭据

使用作用域和声明锁定对桌面应用程序颁发的访问令牌可以执行的操作通常是缓解此类安全问题的主要方法。

相关问题