我正在开发一个由 DB2 over IBM System i (AS/400) 支持的 spring(IoC/MVC/Security)/JTOpen 项目。由于我无法在此讨论的原因,该应用程序的每个用户都在 IBM i (i5/OS) 操作系统上获得了一个帐户,以便他的事务根据他的身份记录在日志(DB2 日志文件)中。为了实现这一目标,一旦有人使用他的凭据登录系统,我们就会建立连接,并相应地根据他在日记中的名字获取他的交易。
问题: 最近,我们一直在研究建立一个连接池,而不是维持每个 session 的连接现状。如果一旦应用程序开始使用通用 i5/OS 帐户(例如:SystemAccount),池就建立这些连接,然后用户登录并请求这些连接之一,是否有任何方法可以以用户的身份执行事务,尽管它是使用通用系统帐户建立?
最佳答案
com.ibm.as400.security.auth包提供了一些类,允许在使用 AS400 时使用 IBM i 配置文件 token 和凭证类来交换用户配置文件。连接类。
如果您使用JDBC您可以调用Security-related APIs在连接上采用配置文件。
- Get Profile Handle (QSYGETPH) 验证用户 ID 和密码,并为该用户配置文件创建一个名为配置文件句柄的加密缩写。
- Set Profile Handle (QWTSETP) 将作业切换为在新配置文件下运行。
- Generate Profile Token (QSYGENPT) 验证调用者是否有权为所请求的配置文件生成配置文件 token ,然后生成配置文件 token 。
- Set To Profile Token (QSYSETPT) 验证配置文件 token 并将当前线程更改为在配置文件 token 表示的用户和组配置文件下运行。
关于spring-security - 连接池+模拟查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22353646/