我为我的网站(称为CLMS)设计了一个RESTful启发式API,我想使用oauth2(而不是oauth1)来保护它 . 经过网络搜索后,我想出了这个......有人可以为我检查一下这个问题,并回答我的问题吗?
Context.
我有一个多租户系统(名为CLMS),它既是授权服务器又是资源服务器 . CLMS API将由特定的可信赖合作伙伴使用(让我们称之为示例一个 3PS ) .
Flow:
Application Credentials
在任何合作伙伴(3PS)可以使用CLMS API之前,他们必须从带外CLMS获取唯一且机密的凭据 . 这些凭据包括client_id和client_secret . 这些详细信息将用于使用OAuth 2.0协议验证API调用 .
client_id应映射到CLMS系统中的单个用户 . 如果需要3PS来访问特定信息,则应将client_id映射到已具有适当权限的CLMS中的用户 .
Access token request
一旦合作伙伴(3PS)收到这些凭证,他们就可以使用它们从我们的CLMS令牌 endpoints 请求oauth2承载令牌:... / v1 / oauth2 / token
需要CLMS令牌 endpoints 来验证您的访问令牌请求(使用HTTP Basic Auth)以及如上所述获得的应用程序凭据 . 'client_id'和'client_secret'在HTTP Basic Auth中成为您的用户ID和密码 .
作为“授权服务器”的CLMS验证您的应用程序凭据并返回访问令牌 . CLMS提供的特定类型的访问令牌是“承载令牌” .
API request authentication
当3PS进行API调用时,通过使用以下语法(在OAuth 2.0协议中定义)在“授权”标头中添加访问令牌来进行请求:
授权:示例:授权:Bearer EEwJ6tF9x5 ... 4599F
Questions
这是否有意义作为oauth2实现?
使用HTTP基本身份验证来请求访问令牌是否可以?
我是否正确地假设我可以根据我系统中已存在的各个CLMS用户权限来映射持有者令牌 .
这被称为'Client Credentials' grant吗?
任何帮助是极大的赞赏 .