繁体   English   中英

结合API的oAuth 2.0客户端凭据和资源所有者密码凭据授予类型?

[英]Combine oAuth 2.0 Client Credentials and Resource Owner Password Credentials Grant Types for API?

我们正在构建一个REST API,它将由我们自己的移动应用程序以及其他应用程序使用。 我们希望使用似乎符合oAuths Client Credentials Grant定义的API密钥来保护它不被公开访问。

某些API端点(例如那些会修改用户资源的端点)将要求用户进行身份验证,这似乎符合资源所有者密码凭据授权定义。

这个问题基本上总结了与下面相关的相同场景,但没有要求任何实际实现可能的示例:

使用OAuth2的资源所有者密码凭据授予类型时,如何保持客户端凭据的机密性

这是一个难以构建的问题。 我已经看过尽可能多的类似问题,但我们似乎都没有回答以下问题:

这样的事情如何发挥作用? 除了在某些端点上请求/传递用户的access_token之外,客户端是否只传递API密钥参数/标头以及每个请求?

在源代码(特别是ruby / rails)方面,是否存在任何可公开访问的示例?

另外,我并没有严格依赖oAuth,所以让我知道是否有其他安全且经过验证的方法可以做同样的事情。

除非您100%控制用户用于连接服务的设备,否则这是不可能的,无论您采用何种技术。

如果有一个软件在用户的机器上运行,并且除了客户端凭证之外不需要任何其他任何东西来执行某些特权操作,那么,有人可以弄清楚这些凭据是什么。

如果您担心恶意用户做某些他们不允许做的事情,您只需将其置于用户名和密码(ish)系统之后,这意味着资源所有者密码凭证(或实际上优选授权代码授权)。

但是,如果您的移动应用只需要能够访问,涉及到的数据专门创建它的设备上,并且不希望用户进行身份验证,然后的API,你可以只是“弥补”每台设备的随机用户名和密码并存储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM