OAuth 2.0 流程中是否始终需要浏览器?

问题描述 投票:0回答:3

我可以在没有浏览器(或应用程序中的嵌入式浏览器)的情况下使用 OAuth 2.0 来执行夜间上传吗?

设置 我有来自提供商控制台的刷新令牌和访问令牌 - Google Drive API

一旦我最初收到刷新/访问令牌,我希望使用 Java SDK 使用/重用这些来上传数据,而不需要任何浏览器授权。

security oauth oauth-2.0 google-drive-api
3个回答
14
投票

OAuth 2.0 需要浏览器征得用户同意一次

需要有浏览器,以便用户同意应用程序访问用户数据的请求。 用户同意与应用程序共享数据后,应用程序可以使用刷新令牌,而无需基于浏览器的流程。

记录于此:https://developers.google.com/accounts/docs/OAuth2WebServer

非浏览器应用程序的替代品

您可以使用OAuth 2.0 for Devices流程: 您的应用程序可以充当从谷歌查询代码、将其显示给用户并要求用户浏览到验证 URL 的设备(例如使用 (system.out.println...)。

所以浏览器还是需要的,但是你的应用程序本身不需要向用户提供网页。


9
投票

是的,这就是使用刷新令牌进行无人值守访问的目的。当用户在 Google 提示中表示同意时,即使他们未登录,他们也允许持久访问。您可以将刷新令牌存储在服务器上的某个位置。当访问令牌过期时,请使用刷新令牌请求新的访问令牌。

为了澄清您问题中的一些措辞,刷新和访问令牌并不形成一对。所以说“重用这些”,实际上应该是“重用这个”,其中“this”是刷新令牌。


0
投票

简而言之:是的,出于安全原因。

当用户点击“登录”按钮时,应用程序应在安全的应用程序内浏览器中打开授权 URL(iOS 上的 ASWebAuthenticationSession 或 Android 上的“自定义选项卡”)。在应用程序中使用嵌入式 WebView 窗口被认为是极其危险的,因为这无法保证用户正在查看该服务自己的网站,因此很容易成为网络钓鱼攻击的来源。嵌入式 Web 视图还提供了更差的用户体验,因为它不共享系统 cookie,并且用户始终必须输入其凭据。通过使用与系统浏览器共享 cookie 的平台安全浏览器 API,您可以获得用户可能已经登录到该服务的优势,而无需每次都输入其凭据。

https://www.oauth.com/oauth2-servers/mobile-and-native-apps/authorization/

© www.soinside.com 2019 - 2024. All rights reserved.