Spring Security自定义身份验证

时间:2014-03-14 21:33:07

标签: spring spring-security passwords credentials security-context

我在Spring MVC项目中实现了一个自定义身份验证提供程序。在我自己的overate riding authenticate()方法中,我实现了自己的身份验证,我构建了自己的UserPasswordAuthenticationToken()并返回对象。

现在上述对象中的userid" UserPasswordAuthentictionToken"是匿名的,密码为null,权限设置为授予此用户的权限。

问题:
这是否会导致SecurityContextHolder或SecurityContext一般丢失传递给重写的authenticate()方法的Authenticate对象内的原始传入凭据?

如果没有,我该怎么做才能删除这些原始凭证并强制Spring安全上下文保存我的新匿名身份验证标识符[最好与其他元数据一起使用]。

1 个答案:

答案 0 :(得分:0)

Java远程调试功能(JDWP)实际上没有危险,因为它在生产中代表了一个安全漏洞,因为它默认是关闭的。

这可能发生的唯一方法是,如果有人在生产中明确地将其打开,但生产团队可能永远不会允许它,并且他们是唯一在该机器上具有管理功能的人。

要在生产中打开调试,有人必须将这些参数添加到服务器启动脚本,或通过控制台设置它们:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<PORT>

这不可能偶然发生。您可以通过尝试使用IDE创建到生产计算机的调试远程连接来确认JDWP在生产中已禁用,它应该会失败。在尝试之前,最好禁用所有断点,以防万一。

如果JDWP在生产允许由于某种原因,生产队可以在服务器的防火墙配置为仅允许对JDWP端口连接,如果来自IP地址的某一可接受的列表中,防止从远程调试生产开发者和访问机密信息。