我正在使用Cognos TM1 10.1 API连接到服务器。该服务器使用Cognos进行身份验证,该验证又使用集成登录以根据我们的Active Directory实例对用户进行身份验证。我尝试使用TM1SystemServerConnect
和TM1SystemServerConnectIntegratedLogin
,但它们都会产生错误。
(请注意,我使用的是简单的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指南,但找不到解决方案(或此错误消息的任何文档)...发生了什么?服务器显示上的日志失败登录attemtps,但没有提供其他信息。
错误是因为上面使用的两个已记录的登录函数是集成的SecurityMode 1、2和3。
。您已经指出,您正在使用Cognos来处理用户身份验证,即模式4或5。使用Cognos Authentication登录到服务器,有两个或多或少的"无证件"功能:
TM1SystemServerConnectWithCAMNamespace
TM1SystemServerConnectWithCAMPassport
这是一个示例,用C 编写(从此处复制),您可以使用参考来使用Cognos Authentication进行连接:
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);