桌面应用中OAuth2授权码流的刷新令牌



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

对于桌面应用程序,您应该遵循RFC8252的建议。如果没有令牌刷新,就会出现可用性问题。例如,访问令牌在15分钟或30分钟后过期,然后用户经历重新打开系统浏览器。

对于一个高安全性的应用程序,比如银行,这可能是好的,但对于大多数应用程序,这不是你想要的。从安全的角度来看,诸如长生存期访问令牌之类的替代方案是不好的,因为长生存期的值随后会在每个API请求上公开。

你也不能通过隐藏的iframe使用静默更新,因为你对系统浏览器没有那么多的控制。你只能通过执行URL来打开它。

你有这些主要的选择,也许你可以向利益相关者解释权衡。您将无法在代码中实现解决方案:

  • 没有刷新令牌,可用性欠佳
  • 使用刷新令牌,因此在公共客户端中使用更长的API凭据

使用作用域和声明来锁定颁发给桌面应用程序的访问令牌可以做什么,通常是这类安全问题的主要缓解方法。

最新更新