【问题标题】:Master password for Spring security user authenticationSpring安全用户认证的主密码
【发布时间】:2016-05-10 10:43:20
【问题描述】:

在我的安全 xml 文件中

<authentication-manager>
        <authentication-provider>
            <password-encoder hash="sha-256" />
            <jdbc-user-service data-source-ref="dataSource"
                users-by-username-query="select email,password, 'true' as enabled from users where lower(email)=lower(?) and activestatus='1' "
                authorities-by-username-query="select u.entityid,e.entityname from entity e, users u where e.entityid = u.entityid and lower(u.email)=lower(?) and u.activeStatus='1';" />
        </authentication-provider>
    </authentication-manager>

我想创建一个主密码;让我说“password123”以允许我登录任何帐户。

应该做什么样的编辑才能使这成为可能?

【问题讨论】:

  • 是什么让您相信这样的事情是可能的,这将如何与用户安全和隐私兼容?您要求创建后门和单点故障。
  • 正确。我想要我的开发机器的主密码以便于访问。
  • 尽管这会导致一个巨大的安全漏洞,但您必须编写自己的身份验证提供程序,该提供程序将首先检查您的后门密码,然后再将身份验证请求传递给基于数据库的底层身份验证提供程序。请不要这样做,或者至少让我们知道这是什么项目,这样我们才能确保我们永远不会使用它。
  • 关于如何实现这一点的任何线索?我知道这可能有多糟糕,但就我的需要而言,这对我的开发环境很重要。

标签: java spring authentication spring-security passwords


【解决方案1】:

【讨论】:

  • 答案往往是仅链接的答案。为了清楚起见,您可以进一步扩展它吗?
【解决方案2】:

您可能不想以任何程序化方式执行此操作。我认为没有理由在您的代码库中包含这样的内容。

如果您真的想为开发人员提供类似的功能,您只需将数据库中的所有用户密码更新为您用于开发人员的相同值即可。

您的数据库架构会有所不同,但我的意思是:

更新schemaname.ACCOUNT SET password='someEncrytedString' 在哪里USER_ID>='1';

请注意,Spring Security 将使用加密字符串,因此您将粘贴加密值而不是明文。

我猜你只希望这个用于开发,我认为使用 SwitchUserFilter 的更复杂的解决方案可能会过度设计。

多年来,我们一直以这种方式做到这一点,而且还不错。仅更改密码的好处是其他用户根本不会受到影响,而损害生产的唯一方法是不小心对不安全的生产数据库运行查询。在这种情况下,好吧,你可能应该得到这个结果。

【讨论】:

    猜你喜欢
    • 2014-04-05
    • 2014-02-23
    • 1970-01-01
    • 2011-02-07
    • 2012-02-08
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多