在我正在进行的当前项目中,我们遇到了以下问题.
我们的软件是基于位置的服务平台,应用程序可以通过使用SOAP的公开Web服务连接和使用我们的服务.到目前为止,我们的平台仅供内部应用程序使用,但现在我们想为第三方应用程序打开它.为此,我们需要一种身份验证机制.
由于我们客户的基础架构和负载平衡解决方案,我们无法使用HTTPS.最初的想法是应用程序可以只使用HTTPS并发送我们验证的密码.
解决方案将是下一个:应用程序具有密码.应用程序生成随机字符串(salt)并创建哈希.然后,应用程序创建一个HTTP请求,发送散列,salt和时间戳.这三个对我们来说足以进行身份验证,因为我们可以生成相同的哈希并进行比较.
我的问题是,为此我们需要以明文形式将密码存储在我们的数据库中,因为我们需要使用给定的salt执行相同的过程,以便我们可以比较结果并验证应用程序.以明文形式存储密码是不可接受的.
您是否知道适合这种情况的任何身份验证/访问控制机制?通常,您是否了解有关应用程序身份验证/访问控制机制的任何好书/来源?
任何帮助都非常感谢.提前致谢!
我目前正在使用Grails和Spring Security插件,并尝试实现密码到期工作流程.我按预期配置了插件:
grails.plugins.springsecurity.failureHandler.exceptionMappings = [
'org.springframework.security.authentication.CredentialsExpiredException': '/login/passwordExpired'
]
Run Code Online (Sandbox Code Playgroud)
在我的密码中,如果我打电话给我:
def username = session['SPRING_SECURITY_LAST_USERNAME']
Run Code Online (Sandbox Code Playgroud)
然后在用户名中,HTML特殊字符将被转义为
my_user => my_user
my-user => my-user
Run Code Online (Sandbox Code Playgroud)
是否可以关闭这个逃脱?
仅限Ritesh这里提到spring_security_last_username该SPRING_SECURITY_LAST_USERNAME被弃用,因此我可以使用什么呢?
如有任何帮助,请提前感谢!