我有一个问题,关于如何使用访问令牌和API密钥架构REST API。
我有一个需要身份验证的API。 我想要实现两种用例:
1.用户使用OAuth2(密码授权)登录接口,并被授予临时访问令牌。 此令牌用于对用户进行身份验证。因此,使用API的UI可以获取数据并显示它。 2.我还希望用户拥有API密钥来执行相同的调用,但是在其应用程序中。 显然,与访问令牌相反,我希望API密钥具有长期生存力。 此外,与访问令牌绑定到给定用户不同(如果我们引入团队机制,则每个用户将具有不同的访问令牌,尽管他们访问相同的资源),API密钥应该唯一地属于项目。
虽然类似,但我不确定如何进行架构设计。 我认为,在内部,API密钥和访问令牌都应存储在同一表中,但是API密钥没有过期时间。 我对吗?
另一件事我也不确定的是客户端的概念。 这似乎在规范中更像是外部应用程序。 但是我可以在这里使用此概念吗?
例如,每个“项目”实际上都是一个不同的客户端(尽管此处的客户端是同一应用程序,而不是第三方开发人员创建的应用程序)。
因此,如果用户A在系统上创建帐户,则将自动创建客户端A,该客户端与客户端A绑定的访问令牌具有长期生存期(也称为API密钥)。 这可用于直接在他的代码中执行API调用,例如。
然后,如果用户A登录仪表板,则将创建临时访问令牌,但这次没有应用程序,而是与用户绑定,并且生命周期短。
听起来合理吗? 是否已经有人实现了这样的东西?
谢谢!
我有一个需要身份验证的API。 我想要实现两种用例:
1.用户使用OAuth2(密码授权)登录接口,并被授予临时访问令牌。 此令牌用于对用户进行身份验证。因此,使用API的UI可以获取数据并显示它。 2.我还希望用户拥有API密钥来执行相同的调用,但是在其应用程序中。 显然,与访问令牌相反,我希望API密钥具有长期生存力。 此外,与访问令牌绑定到给定用户不同(如果我们引入团队机制,则每个用户将具有不同的访问令牌,尽管他们访问相同的资源),API密钥应该唯一地属于项目。
虽然类似,但我不确定如何进行架构设计。 我认为,在内部,API密钥和访问令牌都应存储在同一表中,但是API密钥没有过期时间。 我对吗?
另一件事我也不确定的是客户端的概念。 这似乎在规范中更像是外部应用程序。 但是我可以在这里使用此概念吗?
例如,每个“项目”实际上都是一个不同的客户端(尽管此处的客户端是同一应用程序,而不是第三方开发人员创建的应用程序)。
因此,如果用户A在系统上创建帐户,则将自动创建客户端A,该客户端与客户端A绑定的访问令牌具有长期生存期(也称为API密钥)。 这可用于直接在他的代码中执行API调用,例如。
然后,如果用户A登录仪表板,则将创建临时访问令牌,但这次没有应用程序,而是与用户绑定,并且生命周期短。
听起来合理吗? 是否已经有人实现了这样的东西?
谢谢!