案例:
桌面客户端与服务器A交互,服务器A
因此需要连接服务器B
,客户端通过oauth请求。
现在,在客户端中,我们已经拥有服务器 B 的用户凭据。是否有某种方法可以在不提示用户或显示任何 UI 的情况下对服务器 B 进行身份验证?我们需要以通用方式执行此操作,因为我们不知道服务器 B 是什么。
我目前的理解是不是。即使我们以某种方式自己处理了登录表单,仍然会有用户必须单击的 OAuth 确认。
我只是想确认我目前的理解是准确的。如果您有任何见解,请告诉我。
案例:
桌面客户端与服务器A交互,服务器A
因此需要连接服务器B
,客户端通过oauth请求。
现在,在客户端中,我们已经拥有服务器 B 的用户凭据。是否有某种方法可以在不提示用户或显示任何 UI 的情况下对服务器 B 进行身份验证?我们需要以通用方式执行此操作,因为我们不知道服务器 B 是什么。
我目前的理解是不是。即使我们以某种方式自己处理了登录表单,仍然会有用户必须单击的 OAuth 确认。
我只是想确认我目前的理解是准确的。如果您有任何见解,请告诉我。
简单的回答是No。
由于服务器 B 需要与服务器 A 交互,因此服务器 A 需要在服务器 B 上注册(如 LinkedIn、Twitter 等的应用程序注册)。它主要依赖于服务器 B,但 IMO 服务器 B 不允许直接访问。
但是,可能存在不同的情况,您有 2 个服务器 B 访问点,您可以使用服务器 C 或服务器 A 的详细信息。
A =>C (Access)
A !=>B (no access)
C =>B (access)
在这里,您可以使用服务器 C 的详细信息从 B 获取数据,然后使用 A 的详细信息从 C 获取数据。
客户端已通过 HTTP 重定向发送到服务器 B 上的授权页面。由于您对服务器 B 一无所知,因此您不知道该授权(和/或身份验证)涉及什么;它超出了 OAuth 的范围。您不知道您拥有服务器 B 的用户凭据,因为您不知道它们是什么。
通常,客户端是用户选择的浏览器,服务器 B 可以选择接受它存储在客户端上的身份验证和/或授权凭证(通常使用 cookie),而无需用户交互。但是,这也是您无法控制的;您不能阻止服务器 B 要求用户交互。如果您只需要身份验证,OpenID 更有可能允许这样做,因为通常没有任何 ID 选择,但仍然不确定。
您可以存储访问令牌以供以后更新和使用,而无需重新授权。这也取决于服务器 B,您不能将其用于通用服务器。