Qlik与标头身份验证检索应用程序

时间:2019-04-10 12:43:30

标签: php authentication header qliksense

我正在使用带有标题身份验证的Qlik Sense,但是由于某些原因,当我向qrs / apps / full运行请求时,Xrftoken = lskadjfalkjd我只能得到公共应用程序。 如何设置用户属性以检索该用户的所有应用程序?

以下是我在php中植入qlik请求:

private static function getRequestHeaders($email)
{
    $user = AuthClass::getUser();

    $id   = $user['UserId'];
    $dir  = $user['UserDirectory'];
    $atts = $user['Attributes'];

    $securityHeaders = 'SecureRequest=true; Context=AppAccess;';

    foreach ($atts as $attr)
    {
        $key              = key($attr);
        $val              = $attr[$key];
        $securityHeaders .= "{$key}={$val}; ";
    }

    return [
        'headers' => 
        [
            'X-Qlik-xrfkey: ' . self::$xrfToken,
            'hdr-usr: Users\\' . $email,
            'Accept: application/json',
            'Content-Type: application/json',
            "X-Qlik-Security: $securityHeaders",
            "X-Qlik-User: UserDirectory={$dir};UserId={$id}",
        ]
    ];
}

$res = CurlHelper::get(
   'server/qps/app/full?Xrftoken=039498543', 
   self::getRequestHeaders($email)
);

1 个答案:

答案 0 :(得分:1)

一些没有PHP背景的人的笔记:

  • 您正在呼叫qps/app/full而不是qrs/app/full
  • 应该是Xrfkey而不是Xrftoken,例如qrs/app/full?Xrfkey=01234567890123456
  • Xrfkey必须为16个字符的字母数字
  • 这假设https://server.company.com的虚拟代理具有标头auth而没有前缀
  • 后端集成最好直接通过端口4242调用QRS,这需要一些额外的操作:
    • 通过密钥通过内部客户证书
    • 从使用虚拟代理中的标头更改为使用X-Qlik-User: UserDirectory=<directory>; UserId=<userid>

参考文献: