用于多个API的身份验证服务器

用于多个API的身份验证服务器,api,oauth,Api,Oauth,因此,我正在创建多个RESTAPI,我希望为所有这些服务创建一个单一的身份验证服务器(API),以避免在每个新应用上创建多个登录 什么技术最适合这个?oauth服务器 我还希望它能够根据API分离用户,并在我需要时进行共享。但总是让单一的身份验证服务器完成它的工作,这样我就不必每次都创建单独的登录系统 我还需要对使用API键获取数据的机器进行“非用户输入”访问。但我猜用户只需要一个界面来生成第一个消费者密钥,然后在他们的应用程序中使用它。基本上是没有过期的代币 我设想的流程类似于: API使用者

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

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

我还希望它能够根据API分离用户,并在我需要时进行共享。但总是让单一的身份验证服务器完成它的工作,这样我就不必每次都创建单独的登录系统

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

我设想的流程类似于:

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

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

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


    Oauth,SSO/CAS?

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

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