Динамическое (переменное) утверждение идентичности в apache knox

Я хочу подключиться к HiveServer2 через knox от имени определенного пользователя (userX) и не хочу никакой аутентификации. Для этого я использую "Подтверждение личности" с "Поставщиком анонимной аутентификации".

Внутри моего 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", как мне этого добиться? Как передать этот UserABC в URL-адрес jdbc и какие изменения необходимы в sandbox.xml, чтобы выбрать эту переменную userId.

1 ответ

Для этого вы можете использовать федеративный провайдер HeaderPreAuth. Я также хотел бы выразить предостережение, выраженное в документации, о том, что вам необходимо правильно настроить сетевую безопасность, иначе этот провайдер оставит шлюз открытым для подделки идентификационных данных.

Другие вопросы по тегам