使用Client Credentials获取Snowflake令牌遇invalid_grant错误求助
问题描述
尝试使用Client Credentials授权类型获取Access Token时,收到如下错误响应:
{ "data" : null, "error" : "invalid_grant", "code" : null, "message" : "The provided grant or refresh token is invalid.", "success" : false, "headers" : null }
当前使用的Security Integration配置如下:
CREATE OR REPLACE SECURITY INTEGRATION my_oauth_client TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = CUSTOM OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' OAUTH_REDIRECT_URI = 'https://localhost.com' OAUTH_ISSUE_REFRESH_TOKENS = TRUE;
备注:使用Authorization Code授权类型时可正常获取Access Token(会弹出授权窗口),但需要适配Server to Server场景的Client Credentials模式,请指出配置错误点。
配置错误点及修正
- 未启用Client Credentials授权流:你的Security Integration配置中没有明确允许
CLIENT_CREDENTIALS授权类型,这是导致invalid_grant错误的核心原因。Snowflake OAuth集成默认仅启用适配用户交互的授权流(如Authorization Code),Server to Server场景的Client Credentials需要显式声明。 - 冗余配置可移除:
OAUTH_REDIRECT_URI是Authorization Code模式必填的回调地址,Client Credentials模式下不需要该参数,可从配置中删除。
修正后的配置示例:
CREATE OR REPLACE SECURITY INTEGRATION my_oauth_client TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = CUSTOM OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' OAUTH_ALLOWED_AUTHORIZATION_FLOWS = ('CLIENT_CREDENTIALS') OAUTH_ISSUE_REFRESH_TOKENS = TRUE;
额外注意:使用Client Credentials模式请求Token时,必须使用正确的客户端ID和客户端密钥进行身份验证,确保请求参数中grant_type字段设置为client_credentials。
内容的提问来源于stack exchange,提问作者Rajesh
相关产品推荐
相关产品推荐

