我通过参考此处的文档为雪花帐户创建了自定义 OAuth 客户端,https://docs.snowflake.com/en/user-guide/oauth-custom.html
我使用以下查询为我的本地创建了一个 OAuth 自定义实例:
create security integration My_Snowflake_Connector
type = oauth
enabled = true
oauth_client = custom
oauth_client_type = 'CONFIDENTIAL'
oauth_redirect_uri = 'http://localhost:4200/api/auth/callback/snowflake'
oauth_issue_refresh_tokens = true
oauth_refresh_token_validity = 86400
blocked_roles_list = ()
pre_authorized_roles_list = ('SYSADMIN', 'ACCOUNTADMIN', 'SECURITYADMIN')
oauth_allow_non_tls_redirect_uri = true
我已使用以下查询获得授权和令牌 URL:
DESCRIBE security integration My_Snowflake_Connector
我还使用以下查询获得了机密:
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS( 'MY_SNOWFLAKE_CONNEECTOR' )
我使用了 passport-oauth2
插件和 OAuth2Strategy
在启动 OAuth 流程时,我正确地转到了我登录的雪花帐户,它显示了 OAuth 同意屏幕,但在重定向时,我收到错误 invalid_client
。
我收到以下错误 JSON blob:
{\n "data" : null,\n "error" : "invalid_client",\n "code" : null,\n "message" : "This is an invalid client.",\n "success" : false,\n "headers" : null\n}
我已经验证了回调 URL、客户端 ID 和密码似乎没有错误。
我的配置可能有什么问题?
更新
我们无法找出 OAuth 错误背后的原因,最后,我们最终使用了来自雪花的 Node js 客户端。如需更多信息:https://docs.snowflake.com/en/user-guide/nodejs-driver.html
答案 0 :(得分:0)
当客户端身份验证设置为“在正文中发送客户端凭据”时,我在 Postman 测试 OAuth2 时会看到类似的错误。
将此更改为“作为基本身份验证标头发送”后,令牌生成工作正常并成功进行。
我想此更改也应该可以解决您的问题。我检查的参考资料之一在这里:https://github.com/ciaranj/node-oauth/pull/316