没有浏览器的独立应用程序授权?

Posted

技术标签:

【中文标题】没有浏览器的独立应用程序授权?【英文标题】:Standalone app authorization without browser? 【发布时间】:2012-11-30 21:00:05 【问题描述】:

是否需要浏览器重定向才能获得授权和访问令牌?有没有办法以编程方式获得自动化?我有点惊讶我在 OAuth2 谷歌文档中找到了这个:

https://developers.google.com/accounts/docs/OAuth2#scenarios> 章节安装的应用程序

序列首先将浏览器(嵌入在应用程序中的浏览器或系统浏览器)重定向到带有一组查询参数的 Google URL,这些参数指示应用程序所需的 Google API 访问类型...

我们运行小型 Java 实用程序,其中包含配置文件中的用户名和密码到我们的 google 帐户。我希望有办法在没有任何浏览器交互的情况下获得自动化和访问令牌(当我们在虚拟服务器上将其作为 cron 作业运行时,这有点难以做到)......

【问题讨论】:

在任何情况下都不应将用户名和密码存储在配置文件中。那就是泄露凭据。对于 cron 作业,您可能需要考虑 client_credentials 授权流程,它会将您的 cron 作业视为已知的可信、机密客户端,并且永远不会提示输入密码。 【参考方案1】:

这是关于凭证持有者(用户)和身份验证实体(它可以通过 google 应用程序的服务器、openID 或 facebook...)之间的可信路径。使用 OAuth 的人将他的凭据提供给他信任的服务器,而该服务器又不会泄露有关他的任何秘密数据,从而为您的应用程序提供身份保证。

因此,您必须提供到 Oauth 提供者的可信路径。这可以通过在您的应用程序中打开一个简单的 http 服务器并打开指向它的用户浏览器来完成,然后使用浏览器完成身份验证,并且在身份验证完成后,您的服务器将恢复 OAuth 响应并且您的应用程序可以对用户进行身份验证。

就是这个想法,我不会将我的“全局”凭据输入到某个应用程序,并相信它不会在以后复制和使用它们。您已在特定的 OAuth 提供商中注册,只有他应该知道并接收您的凭据。

【讨论】:

流行的安卓应用程序如何在不通过浏览器的情况下通过其后端进行身份验证?他们不是不太安全吗?

以上是关于没有浏览器的独立应用程序授权?的主要内容,如果未能解决你的问题,请参考以下文章

没有浏览器的 SAML 和 Java 独立应用程序?

没有独立应用程序的移动浏览器上的 Webrtc?

企微获取用户敏感数据

Web服务------Apache配置与应用

在独立的 Android 应用程序上使用 expo-auth-session 进行 Google 登录,浏览器关闭但没有任何反应

如何从另一个应用程序调用我的基于角色的授权 Web API?