我为我的网站(称为CLMS)设计了一个RESTful启发式API,我想使用oauth2(而不是oauth1)来保护它。经过网络搜索后,我想出了这个......有人可以为我检查一下这个问题,并回答我的问题吗?
上下文。
我有一个多租户系统(名为CLMS),它既是授权服务器又是资源服务器。 CLMS API将由特定的可信赖合作伙伴使用(让我们称之为 3PS )。
流量:
应用程序凭据
在任何合作伙伴(3PS)可以使用CLMS API之前,他们必须从带外的CLMS获取唯一且机密的凭据。这些凭据包括client_id和client_secret。这些详细信息将用于使用OAuth 2.0协议验证API调用。
client_id应映射到CLMS系统中的单个用户。如果需要3PS来访问特定信息,则应将client_id映射到已具有适当权限的CLMS中的用户。
访问令牌请求
一旦合作伙伴(3PS)收到这些凭据,他们就可以使用它们从我们的CLMS令牌端点请求oauth2承载令牌: ... / V1 /的oauth2 /令牌
需要CLMS令牌端点来验证您的访问令牌请求(使用HTTP Basic Auth)以及如上所述获得的应用程序凭据。 'client_id'和'client_secret'在HTTP Basic Auth中成为您的用户ID和密码。
CLMS充当“授权服务器”,验证您的应用程序凭据并返回访问令牌。 CLMS提供的特定类型的访问令牌是“承载令牌”。
API请求身份验证
当3PS进行API调用时,通过使用以下语法(在OAuth 2.0协议中定义)在“授权”标头中添加访问令牌来进行请求:
授权:{tokenType} {accessToken} 示例:授权:承载EEwJ6tF9x5 ... 4599F
问题
非常感谢任何帮助。
答案 0 :(得分:1)
首先,如果你有一组有限的客户(合作伙伴),最好手动生成他们的客户ID和秘密并提供给他们。
1 - 作为oauth2实现这是否有意义?
是的确如此,但它只涵盖了客户凭证'授予方案。
2 - 使用HTTP基本身份验证来请求访问令牌是否可以?
这没有任何意义。假设您已经注册了客户端,这只是一个额外的身份验证级别,并不是真正需要的。由于缺少有效的访问令牌,对您的Web服务的任何未经授权的请求都将被拒绝。
3-Am我正确地假设我可以根据我系统中已存在的个人CLMS用户权限来映射持有者令牌。
是的,你可以。我建议使用范围' Oauth2为此提供的功能,您可以在其中关联范围'访问令牌,为他们提供对某些数据的访问权限。
4 - 这被称为'客户端凭证'授予?
是的。
超越以上: