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