我一直在玩身份验证流程,并注意到当我重新启动 Web 服务器时,URL 不再起作用,它们都是无效的。我进行了调试,但我仍然有点迷失到底是为什么,尽管我有很多很好的理由说明它应该发生(我相信你也会这样做)。
我想创建一个服务,该服务将分发到多个容器中,当有请求进入时,它们中的任何一个都可以提供服务。就目前的解决方案而言,看来我必须进行修改才能使其成为可能。
究竟是什么使 URL 无效?为了使我提出的解决方案成为可能,我可以做出哪些改变?
先感谢您。
回应奥哈德的评论:
一、为什么网址无效
让我告诉你我是如何得到错误的。我部署战争,提交忘记密码。接收电子邮件以重置我的密码,然后停止战争。发生这种情况时,我的重置密码页面会提取 enc。然后我停止并重新部署战争。在向 /rest/setNewPassword 映射发送带有 enc 和新密码的休息请求后,然后接收:
2016 年 1 月 9 日 03:50:48,799 [http-nio-8082-exec-1] 错误 web.rest.UserActionRestController - 无法解密 URL 内容 aX8uaOWkqAUQN2xOzlPAOHJjPZaxBwho7.yoMeUtMnJA
在ohadr\crypto\service\CryptoService.java第 261 行有一个异常:
throw new CryptoException("解密 URL 内容失败" + based64EncryptedContent, e);
然后我使用断点来查找:
java aes javax.crypto.BadPaddingException:给定最终块未正确填充
我敢肯定,如果您尝试重现此问题,您会发现相同的结果...
注意:当我在没有重新部署的情况下这样做时,一切都很好!
2. 如何让 auth-flows 作为 SaaS 工作
我希望这项服务能够实现三个用例:
目前,如果我托管一个服务并且它在没有故障转移的情况下出现故障,那么拥有 URL 的人在它恢复时将无法使用他们的链接。我希望他们无论如何都能够使用这些链接。
(未经测试——但很快)与第二个类似,如果我在多个 docker 容器上托管此服务,我相信它将无法接收最初不是来自其容器的链接,因此容器无法共享未排序的负载. 它应该能够读取任何 enc 并对其进行处理。
编辑:
一、为什么网址无效
一个更简单的测试方法是提交一个忘记的密码,获取电子邮件,然后停止战争。重新部署它,然后单击链接。我得到了这个堆栈跟踪:
https://drive.google.com/file/d/0Bwa-JXbjFUDueXVMWWJibjY2Zm8/view?usp=sharing
不用担心 csrf 它没有启用。