带有标头身份验证检索应用程序的 Qlik



我使用带有标头身份验证的 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背景的人的笔记:

  • 你打电话给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>

引用:

  • Xrfkeys
  • X-Qlik-User
  • 使用 PHP 进行连接

最新更新