【问题标题】:OAuth 2.0 for desktop and mobile applications适用于桌面和移动应用程序的 OAuth 2.0
【发布时间】:2012-11-25 02:14:10
【问题描述】:

我正在研究 OAuth 2.0 协议。

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

对于 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 实施示例吗?

【问题讨论】:

    标签: oauth-2.0


    【解决方案1】:

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

    为了克服所有障碍,我实现了 c# 侦听器,它永久解决了问题,现在我的应用程序独立于浏览器。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-03-25
        • 1970-01-01
        • 2011-08-12
        • 2019-01-16
        • 1970-01-01
        • 2021-08-12
        • 2011-04-14
        • 2014-01-10
        • 2020-06-18
        相关资源
        最近更新 更多