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

4
浏览器重定向是否必要以获得授权和访问令牌?有没有办法通过编程方式获得授权?我有点惊讶在OAuth2谷歌文档中发现了这个:

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

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

我们运行一个小的Java实用程序,其中包含配置文件中的用户名和密码以访问我们的Google帐户。我期望有一种方法可以在没有任何浏览器交互的情况下获得授权和访问令牌(当我们在虚拟服务器上作为cron作业运行时有点困难)...


在任何情况下都不应该将用户名和密码存储在配置文件中,这会泄露凭据。对于 cron 作业,您可能需要考虑使用 client_credentials 授权流程,它将信任您的 cron 作业作为已知的受信任、机密客户端,并且永远不会提示输入密码。 - jrh
1个回答

1

这是关于凭证持有者(用户)和认证实体(可以是Google应用程序服务器、OpenID或Facebook等)之间的可信路径。使用OAuth的人将自己的凭据提供给他信任的服务器,而该服务器不会透露有关他的任何机密数据,为您的应用程序提供身份保证。

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

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


流行的安卓应用如何在不通过浏览器的情况下与后端进行身份验证?这样做不会降低安全性吗? - 11m0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接