【问题标题】:Is it possible to authenticate using OAuth without prompting the user when we have the user credentials?当我们拥有用户凭据时,是否可以使用 OAuth 进行身份验证而不提示用户?
【发布时间】:2013-02-16 13:06:45
【问题描述】:

案例:
桌面客户端与服务器 A 交互。
因此,服务器 A 需要连接到服务器 B。
客户端通过了 oauth 请求。
现在,在客户端中,我们已经拥有服务器 B 的用户凭据。是否有某种方法可以在不提示用户或显示任何 UI 的情况下对服务器 B 进行身份验证?我们需要以通用的方式执行此操作,因为我们不知道服务器 B 是什么。

我目前的理解是它不是。即使我们以某种方式自己处理了登录表单,仍然会有用户必须点击的 OAuth 确认。

我只是想确认我目前的理解是准确的。如果您有任何见解,请告诉我。

【问题讨论】:

    标签: oauth


    【解决方案1】:

    简单的回答是

    由于服务器 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 获取。

    【讨论】:

      【解决方案2】:

      客户端已通过 HTTP 重定向发送到服务器 B 上的授权页面。由于您对服务器 B 一无所知,因此您不知道该授权(和/或身份验证)涉及什么;它超出了 OAuth 的范围。您不知道您拥有服务器 B 的用户凭据,因为您不知道它们是什么。

      通常,客户端是用户选择的浏览器,服务器 B 可以选择接受它存储在客户端上的身份验证和/或授权凭据(通常使用 cookie),而无需用户交互。但是,这也是您无法控制的;您不能阻止服务器 B 要求用户交互。如果您只需要身份验证,OpenID 更有可能允许这样做,因为通常没有任何 ID 选择,但仍然不确定。

      您可以存储访问令牌以供以后更新和使用,而无需重新授权。这也取决于服务器 B,您不能将其用于通用服务器。

      【讨论】:

      • 我知道服务器 B 的地址,并且该服务器的用户凭据本地存储在富客户端上。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      相关资源
      最近更新 更多