如何解决浏览器历史记录中的oAuth令牌
我正在编写使用oAuth的本机应用程序。 (我的应用是客户端) 目前,我的应用是Windows固有的,但我认为在所有台式机操作系统上都存在相同的问题。
为适应oauth流程:我的本机应用程序打开一个浏览器选项卡,并将其定向到oauth提供商。
我使用的是浏览器,而不是嵌入式Webview,因为许多身份提供程序(例如google)会阻止非标准的浏览器实现。 (他们想防止自动漫游器。)
我的应用程序有一个小型Web服务器,它用于侦听从身份提供者回调的redirect_url。然后,我的应用程序继续使用所述令牌来访问提供商(例如gmail)的oauth资源
问题是:当身份提供者(例如google)重定向回我的应用程序时,它会在浏览器的地址栏中将access_token返回到我的应用程序。这样,此令牌将出现在浏览器历史记录中,这将使其他本机应用程序(或以后使用浏览器的随机用户)很容易窃取我的应用程序的令牌。
我可以采取什么措施来缓解这种情况?
如何防止oauth回调中的access_token显示在浏览器历史记录中?
解决方法
听起来像您正在使用隐式流,这是主要问题:
- 更新到授权码流程(PKCE),以便仅返回一次使用授权码。即使攻击者以某种方式窃取了它,它也已经被使用,并且攻击将失败。
另一种选择是登录后在浏览器中显示插页页面,单击按钮即可返回您的应用。在此点击过程中,您可以清除浏览器标签的历史记录并移至新位置:
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
WriteLineAndGetReplyWithCancel(request,TimeSpan.FromSeconds(1),token);
// To cancel
source.Cancel();
有关其外观的更多详细信息,请参见我的blog post。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。