1

我正在使用 Cognos TM1 10.1 API 连接到服务器。服务器使用 Cognos 进行身份验证,然后使用集成登录根据我们的 Active Directory 实例对用户进行身份验证。我试过使用TM1SystemServerConnectand TM1SystemServerConnectIntegratedLogin,但它们都产生错误。

(请注意,为了简单起见,我使用了伪代码 - 是的,我已经验证了所有句柄、输入等都是正确和准确的)

// Standard login
TM1V pLogin = TM1ValuePool( hUser );
TM1V hServerName = TM1ValString( pLogin, "server", 0 );
TM1V hUser = TM1ValString( pLogin, "userid", 0 );
TM1V hPassword = TM1ValString( pLogin, "password", 0 );
TM1SystemServerConnect( pLogin, hServerName, hUser, hPassword )
// Integrated Login
TM1V pLogin = TM1ValuePool( hUser );
TM1V hServerName = TM1ValString( pLogin, "server", 0 );
TM1V hServer = TM1SystemServerConnectIntegratedLogin( pLogin, hServerName );

我从两个(hServer)返回的句柄指向 code199和 message的错误SystemServerCAMSecurityRequired。我搜索了 IBM 的TM1 API 指南,但找不到解决方案(或任何有关此错误消息的文档)……这是怎么回事?服务器上的日志显示登录尝试失败,但未提供其他信息。

4

1 回答 1

1

该错误是因为上面使用的两个记录登录功能专门用于IntegratedSecurityMode 1、2 和 3。

您已经表明您正在使用 Cognos 来处理用户身份验证,即模式 4 或 5。使用 Cognos 身份验证登录服务器时或多或少有两个“未记录的”函数:

这是一个用 C++ 编写的示例(从此处复制),您可以使用参考来使用 Cognos 身份验证进行连接:

TM1V voServerName = TM1ValStringW( hPool, (TM1_UTF16_T *)pszServerName, 0 );

TM1V voPasswd = TM1ValStringEncryptW( hPool, (TM1_UTF16_T*)pszPassword, 0 );

TM1V vArray[3];
vArray[0] = TM1ValStringW( hPool, (TM1_UTF16_T*)szCAMNamespace, 0 );        
vArray[1] = TM1ValStringW( hPool, (TM1_UTF16_T*)admin_login_name, 0 );
vArray[2] = voPasswd;

TM1V vCAMArgArr = TM1ValArray(hPool, vArray, 3);
TM1V vTmpServer =
    TM1SystemServerConnectWithCAMNamespace(hPool, voServerName, vCAMArgArr);
于 2014-01-24T15:49:19.810 回答