【问题标题】:Auth server for multiple APIs多个 API 的身份验证服务器
【发布时间】:2014-05-04 02:08:40
【问题描述】:

因此,我正在创建多个 REST API,并且我希望为所有这些服务使用一个身份验证服务器 (API),以避免在每个新应用上创建多个登录。

什么技术最适合这个? oauth 服务器?

我还希望它能够基于 API 分离用户并在需要时共享。但是总是让那个单一的身份验证服务器做它的事情,所以我不必每次都创建单独的登录系统。

对于使用 API 密钥获取数据的机器,我还需要“非用户输入”访问权限。但我猜用户只需要一个界面来生成第一个消费者密钥,然后在他们的应用程序中使用它。基本上是没有过期的token?

我设想的流程是这样的:

  1. API 使用者调用 API 代理,该代理调用 Auth API 来授权用户并返回访问令牌,并且访问令牌存储在其中一个资源 API 服务器上
  2. API 使用者调用现在调用资源服务器的 API 代理,检查有效的访问令牌并返回数据,但这次它不调用 Auth API,因此我不必在内部为每个请求进行两次调用。

这是一个好方法吗?

除此之外,我需要我的实际网站在没有用户登录/交互的情况下使用 API,除了浏览以某种方式访问​​ API,oauth 仍然可以这样做吗?如何在 API 上验证我自己的公共应用程序/网站?我应该预先创建没有到期日期的 oauth 访问令牌吗?

我不打算让用户使用 facebook、google 帐户等登录。我只希望我的公司用户在多个服务上的全局登录和 API 消费者的登录存储在一个地方。

Oauth、SSO/CAS?

【问题讨论】:

    标签: api oauth


    【解决方案1】:

    您可以使用 OAuth20。它的主要思想正是您所需要的。您的用户将传递他们的用户名和密码一次,然后您的 API 消费者应用程序将从授权服务器获取访问令牌(类型=密码)。对您的 API 的所有后续调用都将使用访问令牌。您可以使用不同的客户端凭据注册不同的 API 使用者应用程序。每次生成用户访问令牌时都应使用这些客户端凭据,即生成的用户访问令牌将为特定的 API 消费者应用程序颁发。此外,您的 API 使用者应用程序可以获得访问令牌(type=client_credentials),以便使用与特定用户无关的 API 的某些部分。每个 API 使用者应用程序可能有不同的范围绑定到 API 的不同部分。换句话说,范围定义了 API 的哪一部分可供 API 使用者应用程序使用。关于令牌到期,您可以为 API 消费者应用程序访问令牌使用更长的时间,并为用户访问令牌使用刷新令牌机制。有关更多详细信息,请查看 OAuth20 规范 - https://www.rfc-editor.org/rfc/rfc6749

    【讨论】:

      【解决方案2】:

      除非您想与其他身份提供者和/或服务提供者联合,否则 SSO/CA 是多余的。 OAuth 可以处理您所描述的内容。

      【讨论】:

        猜你喜欢
        • 2015-09-10
        • 2018-11-29
        • 2020-09-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-22
        • 1970-01-01
        • 1970-01-01
        • 2019-07-23
        相关资源
        最近更新 更多