首页 文章

完整性检查Oauth2实现

提问于
浏览
0

我为我的网站(称为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吗?

任何帮助是极大的赞赏 .

1 回答

  • 1

    首先,如果您拥有一组有限的客户(合作伙伴),那么手动生成客户端ID和密码并将其提供给他们将是一个好主意 .

    1 - 这是否有意义作为oauth2实现?

    是的确如此,但它只涵盖了“客户资格”授权方案 .

    2 - 使用HTTP基本身份验证来请求访问令牌是否可以?

    这毫无意义 . 假设您已经注册了客户端,这只是一个额外的身份验证级别,并不是真正需要的 . 由于缺少有效的访问令牌,对您的Web服务的任何未经授权的请求都将被拒绝 .

    3-Am我正确地假设我可以根据我系统中已存在的各个CLMS用户权限来映射持有者令牌 .

    是的你可以 . 我建议使用Oauth2提供的“范围”功能,您可以将“范围”与访问令牌相关联,从而为他们提供对特定数据的访问权限 .

    4 - 这被称为“客户证书”资助吗?

    是的 .

    除此之外:

    • 仅通过HTTPS运行此命令 . 您不希望您的客户端ID /机密或访问令牌通过纯文本HTTP在不安全的公共网络上受到危害

    • 可能有某些'scopes'您可能希望为'login'实现用户授权流程

相关问题