Java 如何从rest服务对用户进行身份验证

Java 如何从rest服务对用户进行身份验证,java,security,authentication,dropwizard,Java,Security,Authentication,Dropwizard,我正在尝试使用我使用drop向导构建的REST服务对用户进行身份验证。从前面的问题中,我找到了在github上使用openID进行身份验证的好例子: 然而,我现在不想处理openID,只想让用户1。报名,2。签名 我的问题/困惑是: 对于注册:我正在考虑将用户的用户名/密码作为POST请求发送,并将凭据作为表单参数或JSON正文的一部分。但是,以明文发送密码是否存在安全风险 对于Sing in,我正在考虑在Dropwizard中使用验证器 我不想用纯文本存储密码。当我在POST中以纯文本形式获取

我正在尝试使用我使用drop向导构建的REST服务对用户进行身份验证。从前面的问题中,我找到了在github上使用openID进行身份验证的好例子:

然而,我现在不想处理openID,只想让用户1。报名,2。签名

我的问题/困惑是:

  • 对于注册:我正在考虑将用户的用户名/密码作为
    POST
    请求发送,并将凭据作为表单参数或JSON正文的一部分。但是,以明文发送密码是否存在安全风险

  • 对于Sing in,我正在考虑在Dropwizard中使用
    验证器

  • 我不想用纯文本存储密码。当我在
    POST
    中以纯文本形式获取用户密码后,我应该采取什么策略?我正在寻找一些java库,它们可以帮助实现密码salt和MD5


  • 查看文档,我们可以看到Dropwizard支持独立的OAuth2实现:

    OAuth2有几个优点,这里可以阅读其中的许多优点:

    注意事项:

    • 在处理身份验证时,您应该始终通过HTTPS托管以确保传输加密
    • Dropwizard声称他们的OAuth2实现尚未完成,将来可能会改变。作为回退,它们也支持基本身份验证,当通过HTTPS使用时,基本身份验证仍然相当安全
    • 实现这一点不涉及使用任何第三方“社交”身份验证服务,如谷歌或Facebook

      • 感谢Dropwizard OpenID项目的支持。很高兴它能让你开始

        如果您想要纯web表单类型的方法,请查看我的另一个项目,它提供了多种身份验证方法(web表单、HMAC、cookie)

        你需要仔细研究,才能真正看到它的工作,因为这个项目并不是设计成这样的演示,而是一个正在进行的工作

        加载项目后,查找哪个将使您进入正确的区域

        Dropwizard身份验证涉及的一般原则。尽管它以HMAC为目标,但您可以使用前面引用的源代码轻松地将其改编为web表单或cookie


        这都是麻省理工学院的许可证,所以您可以根据需要使用。

        您看过他们的文档了吗?OAuth2将是最安全、最RESTful的方法;至于以明文形式发送信用卡,您是否正在构建web前端?如果是这样的话,通过https为你的网站提供服务就不会有问题了。我不认为有任何外部应用会使用API来获取数据。我的api将仅用于我的应用程序的移动和web界面。Oauth2是一种很好的方法,可以确保每个登录用户都收到自己的访问令牌,您可以跟踪和管理这些令牌。除了完全放弃API(并且只使用会话/cookie),它仍然是最好的、可伸缩性最好的方法。现在就做这项工作,它将持续(永远?)也许我没有正确地遵循。如果我走OAuth2路线,我必须向OAuth2提供商之一注册我的应用程序,例如谷歌、github等,对吗?然后我可以用这个令牌来授权用户。。。不,不,不。。。Dropwizard在后端支持OAuth2,因此您可以实现自己的OAuth2服务,然后让浏览器与其执行身份验证握手;完全独立于谷歌等,谢谢。我正在浏览代码并并行实现我的简单服务。我还有一个问题-