我正在研究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实施的示例?
答案 0 :(得分:6)
您可以使用的OAuth wiki lists numerous options,所有这些都有缺点。 最简单的方法是运行可以向用户显示令牌的Web应用程序,然后用户将令牌(可能还有刷新令牌)复制到桌面应用程序中。
如果您有足够的时间,那么您可以调查使用桌面操作系统注册自定义URI,然后将其用作redirect_uri
自动从浏览器传输回您的应用程序。这具有最佳的用户体验。
在这些情况下,恶意应用程序很容易伪装成您的桌面应用程序,安全性依赖于您的用户不安装恶意应用程序。
答案 1 :(得分:1)