Vertica OAuth 认证连接 Toad Data Point¶
原文:Enabling OAuth Authentication in Vertica to Connect to Toad Data Point 测试环境:Vertica 23.3 / Vertica ODBC 23.3 / Toad Data Point 6.0.5 / Keycloak 19.0.2
概述¶
Vertica 除了其他认证方式外,也支持 OAuth(Open Authorization) 认证。OAuth 是一种开放标准协议,无需共享用户凭据即可向应用程序授予访问权限。
本文将介绍通过 Keycloak(开源 IAM)作为 OAuth 服务器,生成 JWT Token,使 Toad Data Point 通过 Vertica ODBC 驱动连接 Vertica。
组件说明¶
| 组件 | 作用 |
|---|---|
| Keycloak | 开源 IAM 解决方案,充当 OAuth 服务器。负责生成 Access Token、验证用户身份、执行访问策略 |
| Toad Data Point | 数据分析和查询工具,使用 Vertica ODBC 驱动连接 Vertica |
步骤一:Keycloak 生成 OAuth Token¶
- 登录 Keycloak
- 创建 Realm
- 创建用户,并完成以下操作:
- 填写必填字段
- 将 Enabled 开关设为启用
- 记录密码
- 将用户映射到
pseudosuperuser角色 - 从 Realm Settings > Keys > Public Key 复制 RS256 公钥
- 打开 Realm Settings > General > OpenID Endpoint Configuration 链接,记录端点地址
步骤二:Vertica 端启用 OAuth 认证¶
在 Vertica 数据库中依次执行以下 SQL(本例使用 JWT 作为验证类型):
-- 清理旧认证(如存在)
DROP AUTHENTICATION IF EXISTS oauthjwt CASCADE;
-- 创建 OAuth 认证,允许所有主机
CREATE AUTHENTICATION oauthjwt METHOD 'oauth' HOST '0.0.0.0/0';
-- 设为 JWT 验证类型
ALTER AUTHENTICATION oauthjwt SET validate_type = 'JWT';
-- 设置 JWT 签发者
ALTER AUTHENTICATION oauthjwt SET jwt_issuer = 'http://<keycloak_IP>:8080/realms/<Realm_Name>';
-- 设置 RSA 公钥(Keycloak 中复制的 RS256 公钥)
ALTER AUTHENTICATION oauthjwt SET jwt_rsa_public_key = '-----BEGIN PUBLIC KEY----- <PUBLIC_KEY> -----END PUBLIC KEY-----';
-- 设置用户名映射字段
ALTER AUTHENTICATION oauthjwt SET jwt_user_mapping = 'preferred_username';
-- 启用 JIT(Just-In-Time)用户创建
ALTER AUTHENTICATION oauthjwt SET oauth2_jit_enabled = 'yes';
ALTER DATABASE default SET OAuth2JITClient = '<ClientName>';
ALTER AUTHENTICATION oauthjwt SET client_id = '<ClientName>';
-- 设置 OAuth discovery URL
ALTER AUTHENTICATION oauthjwt SET discovery_url = 'http://<Keycloak_Server>:8080/realms/<Realm_Name>/.well-known/openid-configuration';
-- 创建与 Keycloak 同名的数据库用户
CREATE USER <Username>;
-- 授权
GRANT AUTHENTICATION oauthjwt TO <username>;
步骤三:创建 Vertica ODBC DSN¶
基本配置¶
- 安装 Vertica ODBC 驱动
- 打开 64-bit ODBC DSN 管理器
- 添加 Vertica DSN,填写以下信息:
- DSN Name
- Database
- Server
- Port
- User Name
- 保存 DSN
添加 OAuth 注册表项¶
- 打开
regedit,导航到HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\<DSN_Name> - 右侧空白区域右键 → New > String Value

- 名称设为
OAuthJsonConfig,值为以下 JSON:
{
"oauthtokenurl": "http://<Keycloak_IP>:8080/realms/<Realm_Name>/protocol/openid-connect/token",
"oauthauthurl": "http://<Keycloak_IP>:8080/realms/<Realm_Name>/protocol/openid-connect/auth",
"oauthclientid": "<Client_Name>",
"oauthclientsecret": "<Client_Credentials>",
"oauthscope": "offline_access openid",
"oauthvalidatehostname": "false"
}
Client Credentials 在 Keycloak > Clients > Credentials 选项卡中获取。
注意:再次打开并保存 Vertica DSN 时,注册表项会被清除,需要重新添加。
步骤四:Toad Data Point 连接¶
- 打开 Toad Data Point
- 点击 Connect → New Connection
- Group 下拉选择 Vertica
- 选择刚创建的 DSN
- 点击 Connect
- Keycloak 登录页面弹出,输入在 Keycloak 中创建的用户名和密码
- 看到成功通知后,切回 Toad Data Point,即完成 OAuth 认证连接