所以我创建了多个REST API,我希望所有这些服务都有一个auth服务器(API),以避免在每个新应用上创建多个登录。
什么技术最适合这个? oauth服务器?
我还希望它能够根据API分离用户并根据需要分享。但是总是让那个单一的auth服务器做它的事情所以我不必每次都创建单独的登录系统。
我还需要"非用户输入"访问使用API密钥获取数据的计算机。但我想用户只需要一个界面来生成第一个消费者密钥,然后在他们的应用程序中使用它。基本上没有过期的令牌?
我设想的流程如下:
这是一个好方法吗?
除此之外,我需要我的实际网站使用API而无需用户登录/交互,除了浏览以某种方式访问API,oauth仍然可以这样做吗?如何在API上验证我自己的公共应用/网站?我是否应该在没有到期日期的情况下预先创建oauth访问令牌?
我不打算用Facebook登录,谷歌帐户等。我只想让我的公司用户登录多个服务并登录存储在一个地方的API消费者。
Oauth,SSO / CAS?
答案 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。