首页 > 解决方案 > Snowflake 自定义 OAuth 客户端因 invalid_client 错误而失败?

问题描述

我通过在此处引用文档https://docs.snowflake.com/en/user-guide/oauth-custom.html为雪花帐户创建​​了一个自定义 OAuth 客户端

我使用以下查询为我的本地创建了一个 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

标签: oauthpassport.jssnowflake-cloud-data-platform

解决方案


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

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

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


推荐阅读