我正在尝试找到一种解决方案,允许用户使用他们的数据库凭据登录。
此时,我正在连接“通用数据库用户”,然后我使用带有用户名和密码的USERS表。我想删除此表并直接使用Oracle验证用户名和密码。
编辑:说明
用户通过我们自己的用户/密码连接保存在我们数据库的表中。但是,客户端希望使用Oracle用户名访问应用程序。换句话说,我当前的Spring配置是使用root用户(root root)的用户名/密码建立的。使用该方案,我可以访问数据库中的数据。我根据数据库中的用户表来验证用户/密码,以将用户登录到应用程序中。不过,我需要一种预身份验证,允许我配置动态数据源或不配置数据源,以便用户可以使用外部用户名和密码进入程序(在我的情况下,这将是Oracle的)。 / p>
如果没有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凭据,因为它存储在数据库中
谢谢!
答案 0 :(得分:1)
Jasig CAS使用BindModeSearchDatabaseAuthenticationHandler。它尝试使用提供的用户名和密码连接到数据库,如果可行,则认为用户需要进行身份验证。
因此,您可以使用CAS(Spring Security可以与之集成),或者在应用程序中实现类似于BindModeSearchDatabaseAuthenticationHandler的内容。