首页 > 解决方案 > Power BI:提供的凭据不能用于源

问题描述

我遇到了 Oauth 和自定义 Power BI 连接器的问题。我想做的事有可能吗?

我正在为 Snowflake 构建一个自定义 Power BI 连接器,我想在其中使用 Keycloak 作为身份提供者。身份验证通过 Oauth2 完成。可以使用 ODBC 驱动程序完成与 Snowflake 的 OAuth 连接。连接字符串中的身份验证器值应设置为“oauth”。

但是当使用 OAuth 作为 AuthKind 时,我无法让它在 Power BI 连接器中工作,而使用 UsernamePassword 工作正常。

这是构建连接字符串的部分:

...
            else if AuthKind = "OAuth" then
                [        
                      driver = "SnowflakeDSIIDriver"
                      ,server = Host
                      ,warehouse = warehouse
                      ,authenticator = "oauth"
                      ,token=Extension.CurrentCredential()[access_token]
                ]
            else if AuthKind = "UsernamePassword" then
               [        
                      driver = "SnowflakeDSIIDriver"
                      ,server = Host
                      ,warehouse = warehouse
                      ,authenticator = "snowflake" 
                ]
...

在调试模式下,我收到一个 access_token,但是当我想使用此令牌建立连接时,我收到以下错误:提供的凭据不能用于...源。

看起来在使用 OAuth 时,无法将连接字符串用于 odbc 源。

在 Snowflake 中,我使用以下设置创建了安全集成:

create security integration keycloak_oath
  type = external_oauth
  enabled = true
  external_oauth_type = 'custom'
  external_oauth_issuer = 'https://<NAME_OF_KEYCLOAK_SERVER>/auth/realms/<NAME_OF_REALM>'
  external_oauth_token_user_mapping_claim = 'upn'
  external_oauth_snowflake_user_mapping_attribute = 'email_address'
  external_oauth_jws_keys_url = 'https://<NAME_OF_KEYCLOAK_SERVER>/auth/realms/<NAME_OF_REALM>/protocol/openid-connect/certs'
  external_oauth_any_role_mode = 'ENABLE';

在 Keycloak 领域中,我创建了一个具有以下设置的客户端(除其他外):

标签: oauthpowerbikeycloaksnowflake-cloud-data-platformconnector

解决方案


推荐阅读