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

问题描述 投票:0回答:1

我使用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)
);
php authentication header qliksense
1个回答
2
投票

来自没有PHP背景的人的一些注意事项:

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

参考文献:

© www.soinside.com 2019 - 2024. All rights reserved.