使用Cognos进行身份验证时出现SystemServerCAMSecurityRequired错误

时间:2014-01-24 15:49:20

标签: cognos-tm1

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

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

// 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)返回的句柄指向代码为199的错误和消息SystemServerCAMSecurityRequired。我搜索了IBM的TM1 API Guide,我找不到解决方案(或此错误消息的任何文档)......发生了什么?服务器上的日志显示登录attemtps失败,但不提供其他信息。

1 个答案:

答案 0 :(得分:1)

错误是因为上面使用的两个记录的登录函数特定于IntegratedSecurityMode 1,2和3。

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

这是一个用C ++编写的示例(从here复制而来),您可以使用引用来使用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);