我正在开发一个BaaS解决方案,为开发人员提供一些应用程序的REST API。 除了SSL之外,我还希望保护REST API对应用程序(令牌?)和客户端(用户和密码)进行身份验证。
我正在考虑客户端的基本身份验证和应用程序身份验证的令牌,但我无法想象在注册阶段向应用程序开发人员提供的简单UUID令牌如何保护REST API并验证应用程序。
此外,我读到了OAuth,但我认为它不适合作为身份验证机制的解决方案。
我怎样才能以正确的方式实现这一目标?
谢谢!
答案 0 :(得分:1)
使用“基本身份验证”进行用户身份验证,然后使用“令牌身份验证”访问资源(全部使用SSL)似乎是一种很好的(也是常见的)方法。基本上为了支持这一点,您可以使用SSL上的“基本身份验证”(用户名/密码)进行用户身份验证,并且基于肯定的“身份验证”,用户将获得“持有者令牌”(或身份验证令牌)。用户凭证通常存储(散列和加盐)在DB中,如身份验证令牌。根据检索到的令牌,用户可以访问API资源(也通过SSL授予最大的通道安全性)。您可以不时(或每台设备)更改令牌。
不确定您使用哪种技术来开发RESTful Web服务。在Java中,我一直在使用Apache Shiro(http://shiro.apache.org/),它允许支持所有这些活动(基本身份验证,基于令牌的身份验证,数据加密(哈希+ salting)以存储在数据库中等等) - 采取看看我写的关于如何在shiro中设置这种方法的另一篇文章:https://stackoverflow.com/a/17950339/1029673)。
HTH。
答案 1 :(得分:0)
最后,我想出了适合我的安全架构的OAuth 2.0资源所有者密码流。
谢谢!