我正在使用Spring编写一个web应用程序(REST API),Spring Security。现在我有了基本的身份验证和使用用户名、密码和角色的非常简单的授权。我想改进安全层,但我没有这方面的经验。
当我在postman上寻找可能的身份验证方法并在google上搜索时,我发现有以下选项:
我应该集中精力做什么?
你看到我的描述\解释中有什么错误吗?
对于web应用程序而言,web应用程序请求应该具有状态,会话是最常见的状态获取方式。
当我们考虑到REST API的请求是无状态的,但是对于用户或客户机的身份验证和识别有很多方法,正如OP提到的。
在基本身份验证中,用户发送由base64编码器编码的凭据。
凭据在授权头中发送,其基本前缀如下所示。“Basic”+encodeUsingBase64(用户名+“:”+密码)
与基本身份验证相比
>
基本身份验证是在每个请求中发送完整凭据(包括密码)的身份验证步骤。
JWT是一个后身份验证步骤,通过身份验证的用户接收一个不包含密码信息的签名令牌。
Oauth2身份验证服务器不仅适用于facebook和Google这样的应用程序,而且您的应用程序也可以设置Oauth2服务器,并且您可以根据订阅/许可为您的客户机提供不同范围、不同寿命的access_token(将API与他们的应用程序集成)。
我没有做过摘要验证。请参阅此线程了解更多详细信息
以上任何身份验证都涉及到传输层安全(SSL)对于确保您在后续请求中传递的凭据/令牌不被捕获为纯文本是很重要的。
这并不困难,但它让我质疑spring auth服务器是最好的选择,还是我应该使用Keycloak?
问题内容: 在没有信用卡号且没有其他信息的情况下,PHP中确定该号码是否为有效号码的最佳方法是什么? 现在,我需要可以与American Express,Discover,MasterCard和Visa一起使用的功能,但是如果它也可以与其他类型的功能一起使用,可能会有所帮助。 问题答案: 卡号验证分为三个部分: 模式 -是否与发行者模式(例如VISA /万事达卡等)匹配 CHECKSUM- 它是否
问题内容: Java是我选择的编程语言之一。尽管将应用程序分发给最终用户,但我总是遇到问题。 为用户提供JAR并不总是像我想要的那样友好,并且使用Java WebStart要求我维护Web服务器。 分发Java应用程序的最佳方法是什么?如果Java应用程序需要在用户计算机上安装工件,该怎么办?有没有好的Java安装/打包系统? 问题答案: 有多种解决方案,取决于你的发行要求。 只是用一个jar。这
问题内容: 我看过这样的例子: 并假设我可以有一个Constants类来包装常量,并声明它们为static final。我几乎不了解Java,并且想知道这是否是创建常量的最佳方法。 问题答案: 这是完全可以接受的,甚至可能是标准。 类型是哪里,是所有大写字母的名称,下划线带有空格,并且VALUE是常量值; 我强烈建议不要将常量放在自己的类或接口中。 附带说明:声明为final且可变的变量仍然可以更
我需要在我们的Web应用程序中使用LDAP/AD服务器实现SSO身份验证和验证用户。Web应用程序是使用Spring(Java)/Hibernate制作的,应用程序服务器是UAT中的Jboss和生产中的Webphere。 我正在寻找一些好的简单的解决方案,可以帮助我实现它,从几个朋友那里听说华夫饼是一个很好的解决方案,但是在网上搜索并尝试了几天之后,我不确定我是否朝着正确的方向前进。我在这方面很幼
我的问题是,对于应用程序的管理员来说,跟踪异常的最佳方法是什么。(出于维护目的,通知管理员抛出的异常)。 对于系统的用户,我认为应该捕捉异常并显示适当的错误信息。我认为,要管理系统,最好的方法是有一个消息传递系统,将每个异常的细节作为消息发送给接收者。一旦接收方收到新的错误消息,将其保存在数据库中,或者ping管理员一封包含异常详细信息的电子邮件。