【问题标题】:JDBC via BPXBATCH - how to get TSO-user credentials?通过 BPXBATCH 的 JDBC - 如何获取 TSO 用户凭据?
【发布时间】:2014-12-12 07:17:27
【问题描述】:

我有一个通过 jdbc 读取 db2 表的 Java 小程序。该程序通过“tso bpxbatch myjavatool”调用。

我想知道是否有可能将我的 TSO 用户的用户名/密码“传递”给 JDBC 驱动程序?

例如,如果我使用简单的 REXX 脚本连接到 DB2,我不必再次指定我的用户名/密码,并且 DB2/RACF 会检查我的用户是否被允许执行 SQL。

现在我的 java 工具不在我的 TSO 地址空间中运行,而是在 USS 地址空间中的 J9 的控制下...

还有没有办法让当前的 TSO 用户自动登录 DB2?

【问题讨论】:

    标签: jdbc db2 zos j9 tso


    【解决方案1】:

    我对 BPXBATCH 了解不多,但我假设您仍在 USS-address-space 中以自己的用户 ID 运行。

    在您的 java 代码中,您应该能够通过

    获取您的用户 ID
    String user = System.getProperty("user.name");
    

    至于密码,您可以尝试改用 RACF-Passtickets。在/user/include/java_classes 中有一个库IRRRacf.jar,在同一目录下IRRRacfDoc.jar 有相应的javadoc。生成 Passticket 的代码比较简单:

    IRRPassTicket generator = new IRRPassTicket();   
    String ptkt = generator.generate(user,applid);
    

    然后只需传递密码而不是密码就可以了。

    唉,在使用这种方法之前,您必须确保几个方面:

    • 设置 RACF 以使用 Passtickets for DB2 - 它可能已经配置,否则您必须在 PTKTDATA 类中设置适当的配置文件(有关详细信息,请参阅 RACF 文档)
    • 确保每个运行代码的用户都拥有适当的 RACF 授权来使用 r_ticketserv 可调用服务(再次参见 RACF 文档)
    • 为您的 DB2 系统找到正确的应用程序名称 (applid)。请参阅有关使用 passtickets 的 DB2 文档。

    【讨论】:

    • IRRPassTicket 是一个非常好的主意,我以前从未听说过这个功能。好的。目前我正在努力找出 DB2 应用程序 ID,但我相信有办法从某个地方提取它......
    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 2018-01-28
    • 2016-05-28
    • 1970-01-01
    • 2017-05-13
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多