用于多个API的Auth服务器

时间:2014-03-25 22:53:28

标签: api oauth

所以我创建了多个REST API,我希望所有这些服务都有一个auth服务器(API),以避免在每个新应用上创建多个登录。

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

我还希望它能够根据API分离用户并根据需要分享。但是总是让那个单一的auth服务器做它的事情所以我不必每次都创建单独的登录系统。

我还需要"非用户输入"访问使用API​​密钥获取数据的计算机。但我想用户只需要一个界面来生成第一个消费者密钥,然后在他们的应用程序中使用它。基本上没有过期的令牌?

我设想的流程如下:

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

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

    我不打算用Facebook登录,谷歌帐户等。我只想让我的公司用户登录多个服务并登录存储在一个地方的API消费者。

    Oauth,SSO / CAS?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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