【问题标题】:Authentication base64身份验证 base64
【发布时间】:2011-05-20 15:12:47
【问题描述】:

我正在使用 Spring roo 开发一个应用程序。 作为暗示 Spring 安全性的第一个身份验证测试,我对数据库中的表使用身份验证。效果很好:

    <authentication-manager alias="authenticationManager">
        <authentication-provider>
            <jdbc-user-service data-source-ref="dataSource" authorities-by-username-query="select username,authority from users where username=?"/>
        </authentication-provider>
    </authentication-manager>

现在事情变得更具挑战性(对我而言),因为“真实”(在生产环境中)用户表中的密码是加密的,我必须首先使用哈希函数 md5,然后使用 base64 编码以及iso 来处理特殊字符。

我必须创建一个自定义 jdbc-user-service。处理这些操作的最佳做​​法是什么?

【问题讨论】:

  • 您是否查看过 Spring Security 附带的现有密码编码器功能?
  • 是的。这很好,但不幸的是,用于现有用户名和密码的编码方法有点奇怪,我必须构建它......
  • 是的,我明白了,但是如果您查看现有的实现,您应该对如何实现这一点有一些很好的指导。我不明白您为什么需要自定义 JDBC 用户服务,连接到您的用户详细信息服务的密码编码器实现应该可以正常工作。
  • 我想我很难弄清楚你的问题是什么——你想知道如何创建自定义密码编码器,或者如何将其连接到标准 JDBC 用户服务,或者两者都有?
  • 我实际上两者都需要。你是对的,我的问题并不精确,因为我不完全了解弹簧安全性。我在密码编码器标签上找到了一些很好的资源(使用 bean 的引用),但我对如何创建密码编码器以及如何使用不同的方法感到困惑。

标签: spring authentication spring-security spring-roo


【解决方案1】:

按照建议,我设法解决了 Spring 安全构建中的身份验证问题。

我必须先将 security-context.xml 的编码设置为 ISO-8859-1

<?xml version="1.0" encoding="ISO-8859-1"?>

然后使用:

<password-encoder hash="md5" base64="true" ></password-encoder>

【讨论】:

    【解决方案2】:

    要做的第一件事是创建一个自定义密码编码器,这将使我能够更好地控制身份验证过程。

    1. 在 applicationContext-Security.xml 中

    2. 创建自定义类

      公共类 SnatiPasswordEncoder 实现 PasswordEncoder {

      @Override
      public String encodePassword(String arg0, Object arg1)
              throws DataAccessException {
          // TODO Auto-generated method stub
          return null;
      }
      
      @Override
      public boolean isPasswordValid(String arg0, String arg1, Object arg2)
              throws DataAccessException {
          // TODO Auto-generated method stub
          return false;
      }
      
      /**
       * @param args
       */
      public static void main(String[] args) {
          // TODO Auto-generated method stub
      
      }
      

      }

    接下来应该做什么?

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 2018-05-28
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 2015-02-02
      • 2018-02-24
      • 2015-04-29
      相关资源
      最近更新 更多