首页 文章

具有oracle凭据的Spring安全性(数据源不是来自属性)

提问于
浏览
1

我正在尝试找到一种解决方案,允许用户使用他们的数据库凭据登录 .

此时,我正在连接“通用数据库用户”,然后我使用带有用户名和密码的USERS表 . 我想删除此表并直接使用Oracle验证用户名和密码 .

编辑:解释

用户通过我们自己的用户/密码连接保存在我们数据库的表中 . 但是,客户端希望使用Oracle用户名访问应用程序 . 换句话说,我当前的Spring配置是使用root用户(root root)的用户名/密码 Build 的 . 使用该方案,我可以访问数据库中的数据 . 我根据数据库中的用户表来验证用户/密码,以将用户登录到应用程序中 . 然而,我需要一种预身份验证,允许我配置动态数据源或不配置数据源,以便用户可以使用外部用户名和密码进入程序(在我的情况下,这将是Oracle的) .

没有Spring配置,我可以每次都希望连接到数据库,因为每次需要连接时我都必须使用用户名和密码登录 . 如何修改静态Spring数据源(由属性文件配置),以便在用户首次登录平台并保存数据源时能够配置数据源?

可能吗?

这是我对数据库上TABLE的当前连接:

@Autowired
protected void configureGlobal(AuthenticationManagerBuilder registry) throws Exception, BadCredentialsException {
     registry
    .jdbcAuthentication()
    **.dataSource(dataSource)**
    .usersByUsernameQuery("select COD as principal, PASSWORD as credentials, 1 "
            + "from USUARIOS where COD = ?")
    .authoritiesByUsernameQuery("select ROLES_POR_USUARIO.COD, ROLES.NOMBRE "
                + "from ROLES_POR_USUARIO inner join ROLES "
                + "on ROLES.COD = ROLES_POR_USUARIO.COD "
                + "where ROLES_POR_USUARIO.COD = ?");
 }

静态数据源:

db.driver=oracle.jdbc.OracleDriver
db.url=my_oracle_url
db.username=database_user
db.password=database_user_pass

我想连接尽可能多的db.username / db.password凭据,因为它存储在数据库中

谢谢!

1 回答

  • 1

    Jasig CAS使用BindModeSearchDatabaseAuthenticationHandler . 它尝试使用提供的用户名和密码连接到数据库,如果可行,则认为用户需要进行身份验证 .

    因此,您可以使用CAS(Spring Security可以与之集成),或者在应用程序中实现类似于BindModeSearchDatabaseAuthenticationHandler的内容 .

相关问题