Apache Knox中的动态(可变)身份声明

时间:2018-08-16 14:16:55

标签: jdbc knox-gateway apache-knox

我想以特定用户(userX)的身份通过knox连接到HiveServer2,并且不需要任何身份验证。为此,我将“身份声明”与“匿名身份验证提供程序”一起使用。

在我的sandbox.xml(存在于拓扑中)内部,我使用了以下代码:

<provider>
        <role>authentication</role>
        <name>Anonymous</name>
        <enabled>true</enabled>
</provider>
<provider>
        <role>identity-assertion</role>
        <name>Default</name>
        <enabled>true</enabled>
        <param>
        <name>principal.mapping</name>
        <value>anonymous=userX;</value>
        </param>
</provider>

这很好,但是我希望userX是一个变量,并且希望通过jdbc url命令接收此变量。

我正在使用的命令:

beeline -u "jdbc:hive2://GATEWAY-HOST:GATEWAY-PORT/;ssl=true;sslTrustStore={gateway.jks location};trustStorePassword={master-key};transportMode=http;httpPath=gateway/sandbox/hive"

说我想将连接建立为“ UserABC”,我该如何实现? 如何在jdbc url中传递此UserABC,以及需要在sandbox.xml中进行哪些更改以选择该变量userId。

1 个答案:

答案 0 :(得分:0)

您可以为此使用HeaderPreAuth联合身份验证提供程序,我还要回应文档中表达的警告,即您需要配置适当的网络安全性,否则此提供程序将使网关容易遭受身份欺骗。