我有一个关于如何构建使用访问令牌和API密钥的REST API的问题。构建API密钥和访问令牌
我有一个需要验证的API。我想启用两个用例:
使用的OAuth2(密码补助金)的用户登录到界面,并被授予临时访问令牌。该令牌用于认证用户。因此,使用API的UI可以获取数据并显示它。
我也希望用户有一个API密钥来执行相同的调用,但在其应用程序。显然,与访问令牌相反,我希望API密钥长期存在。此外,与绑定到给定用户的访问令牌相反(如果我们引入团队机制,每个用户将拥有不同的访问令牌,虽然他们访问相同的资源),但API密钥应该对项目是唯一的。
虽然相似,但我不确定我应该如何构造它。我认为,在内部,API密钥和访问令牌应该存储在同一个表中,但API密钥没有到期时间。我对吗?
我不确定的一件事还是客户端的概念。看来在规范中,客户端更像是一个外部应用程序。但是我可以在这里实际使用这个概念吗?例如,每个“项目”实际上是一个不同的客户端(虽然这里的客户端是同一个应用程序,而不是由第三方开发者创建的应用程序)。
因此,如果用户A在系统上创建一个帐户,则客户端A将自动创建一个访问令牌,并与一个长期访问令牌(又名API密钥)绑定到客户端A.例如,这可以用来直接在他的代码上执行API调用。
然后,如果用户A登录到仪表板,则会创建一个临时访问令牌,但此时没有应用程序,但与用户绑定,寿命短。
这听起来理智?有没有人已经实现了这样的事情?
谢谢!
API密钥和访问令牌是不同的概念,它们分别进行建模,并将它们分开存储。 –
是的,但你如何处理我想以同质方式访问API的事实?我不想有不同的方式来使用API。无论是我的Web应用程序使用临时令牌还是使用API密钥直接从其Web服务器使用API的客户端使用它。 –