2014-03-25 99 views
0

因此,我创建了多个REST API,并且希望为所有这些服务提供单个auth服务器(API),以避免在每个新应用程序上创建多个登录。用于多个API的Auth服务器

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

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

我还需要对使用API​​密钥获取数据的机器进行“非用户输入”访问。但我想用户只需要一个接口来生成第一个消费者密钥,然后在他们的应用中使用它。基本上没有到期的令牌?

我设想的流程是这样的:

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

这是一个很好的方法吗?

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

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

Oauth,SSO/CAS?

回答

0

除非您希望与其他身份提供商和/或服务提供商联合,否则SSO/CA会出现问题。 OAuth可以处理您所描述的内容。

0

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

相关问题