Snowflake 自定义 OAuth 客户端因 invalid_client 错误而失败?

时间:2021-06-09 10:06:57

标签: oauth passport.js snowflake-cloud-data-platform

我通过参考此处的文档为雪花帐户创建​​了自定义 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

1 个答案:

答案 0 :(得分:0)

当客户端身份验证设置为“在正文中发送客户端凭据”时,我在 Postman 测试 OAuth2 时会看到类似的错误。

将此更改为“作为基本身份验证标头发送”后,令牌生成工作正常并成功进行。

我想此更改也应该可以解决您的问题。我检查的参考资料之一在这里:https://github.com/ciaranj/node-oauth/pull/316