【问题标题】:Qlik with header authentication retrieving apps带有标头身份验证的 Qlik 检索应用程序
【发布时间】:2019-04-10 12:43:29
【问题描述】:

我使用带有标头身份验证的 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】:

    没有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>

    参考文献:

    【讨论】:

    • 你好。您在上面指出的只是错别字。关于使用证书方式,是的,我已经知道了。我们使用标头身份验证方式有一个特殊的原因。这就是我们迁移到标头身份验证方法的原因。因此问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2015-07-20
    • 2018-01-13
    相关资源
    最近更新 更多