OAuth 2.0适用于桌面和移动应用程序

时间:2012-12-06 22:43:02

标签: oauth-2.0

我正在研究OAuth 2.0协议。

我遇到了为不在网络服务器上运行的桌面/移动应用程序生成承载令牌的问题。

对于Web应用程序,OAuth 2.0协议流程对我来说很清楚。假设myapp.com想要代表用户Alice访问protectedresource.com,那么Alice会被重定向到https://protectedresource.com/oauth?redirect_uri=https://myapp.com/oauth&[...],因此资源管理员在获得同意后,会将Alice的浏览器重定向到将收集授权的页面代码并使用它来获取持票人令牌。

此工作正常且安全,因为protectedresource.com会识别myapp.com域,并且仅对来自myapp.com

的请求发布不记名令牌

如果我正在运行桌面应用程序,即使支持浏览器(即在Windows窗体中嵌入HTML查看器或类似的东西)我应该在同意后重定向Alice?

谁收集授权码?控制流如何变化?

是否有人在桌面或Android上运行OAuth 2.0实施的示例?

2 个答案:

答案 0 :(得分:6)

您可以使用的OAuth wiki lists numerous options,所有这些都有缺点。 最简单的方法是运行可以向用户显示令牌的Web应用程序,然后用户将令牌(可能还有刷新令牌)复制到桌面应用程序中。

如果您有足够的时间,那么您可以调查使用桌面操作系统注册自定义URI,然后将其用作redirect_uri自动从浏览器传输回您的应用程序。这具有最佳的用户体验。

在这些情况下,恶意应用程序很容易伪装成您的桌面应用程序,安全性依赖于您的用户不安装恶意应用程序。

答案 1 :(得分:1)

我有一个C#桌面应用程序,但我遇到了类似的问题。我没有获得有关如何在桌面应用程序中实现OAuth的正确答案。为了解决此问题,我使用了内置的Web浏览器控件,并通过读取回调URL并生成令牌来读取 auth代码。但是几个月后,Shopify,eBay和QBO等网站停止了对IE11和更早版本的支持,不幸的是,内置的Web浏览器控件使用了IE11的库,所以我再次陷入困境。

为克服所有障碍,我实现了c#侦听器,并永久解决了该问题,现在我的应用程序与浏览器无关。

您可以在here上观看我的完整视频,还可以从here下载示例项目。