将AS400(IBM i)配置文件令牌传递给OLE DB连接

时间:2014-03-04 15:12:23

标签: vb6 oledb ado ibm-midrange jt400

我们有一个Java应用程序(Web服务器)可以为授权用户提供AS400(IBM i)配置文件令牌凭证,使用JT Open包(最终为字母数字字符串)生成。我们可以将此配置文件令牌传递给其他Java应用程序,这样他们就可以使用它来建立连接,而无需在每台客户端PC上传递用户/密码或在配置文件中有多个用户/密码副本。

我们现在需要调用当前需要用户/密码的旧版VB应用程序(VB6),但我们希望能够将其传递给Profile Token Credential。 VB程序使用OLE DB(ADODB对象)建立与AS400的连接;例如目前的代码......

oCN = New ADODB.Connection
oCN.Open "Provider=IBMDA400;Data Source=AS400SERVERNAME;Force Translate=0", USER, PASSWORD

......我们希望将此更改为......

oCN = New ADODB.Connection
oCN.Open "Provider=IBMDA400;Data Source=AS400SERVERNAME;Force Translate=0", TOKEN

......或类似的。

我查看了v7R1 IBM i Access for Windows OLE DB技术参考,我看不到任何提及配置文件令牌凭据。 MS文档也只提及用户/密码(http://msdn.microsoft.com/en-us/library/windows/desktop/ms676505(v=vs.85).aspx)。

我想知道的是,是否有人使用了OLE DB / ADO或任何其他Visual Basic 6.0兼容数据库技术的Profile Token Credentials,如果有的话,您是否有任何文档,示例或参考资料可以共享?

BTW - 如果令牌技术不能与VB6一起使用但可以与VB.NET一起使用,那么我们也有兴趣听听如何做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以使用通用最小权限配置文件来执行初始连接,然后使用令牌调用QSYSETPT API以采用特定配置文件。

cnn = New ADODB.Connection
cnn.Open "Provider=IBMDA400;Data Source=AS400SERVERNAME;Force Translate=0", USER, PASS
cmd = New ADODB.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdText
cmd.CommandText = "{{CALL QSYSETPT(?,?)}}"
cmd.Parameters.Append
    cmd.CreateParameter(, adBinary, adParamInput, 32, token)
cmd.Parameters.Append 
    cmd.CreateParameter(, adInteger, adParamInputOutput, 4, 0)
cmd.Execute