我们正在尝试使用 Azure Active Directory (AAD) 单点登录 (SSO) 将 Power BI Desktop 连接到我们的 Snowflake 实例,但遇到了问题。目前我们最好的猜测是,这是因为我们在 AAD 中使用了多因素身份验证 (MFA)。
序言
contoso_dw.canada-central.azure.snowflakecomputing.com
和仓库 DEV_WH
问题
我们验证了用户能够使用 AAD SSO 和 MFA 直接连接到雪花。我们验证了雪花 UI 和 Power BI Desktop 中指定的服务器和仓库是否相同。我们在 Power BI 中提示输入凭据时指定 Microsoft 帐户,它确实提示通过 Microsoft 登录,这似乎成功了。 尽管如此,我们还是收到了以下错误:
<块引用>ODBC: ERROR [28000] 指定的用户名或密码不正确。
我们注意到 https://docs.snowflake.com/en/user-guide/oauth-powerbi.html#error-messages 此处列出了此特定错误,但我们已将其视为不负责任,因为用户可以使用相同的 AAD SSO 凭据直接登录到 Snowflake 网络用户界面。
我们怀疑这是因为我们的 AAD 有 MFA 要求。有没有其他人经历过同样的行为?任何人都可以验证这是否是 MFA 副作用?
答案 0 :(得分:1)
Snowflake 门户的 SSO 登录与 PowerBI 中的 SSO 不同。
您需要在 Azure 门户中配置两个 OAuth 应用注册,如 https://docs.snowflake.com/en/user-guide/oauth-azure.html 中所述。仔细阅读说明,您确实需要按照该文章中的说明创建两个应用注册。
当您完成“第 4 步:在 Snowflake 中创建 OAuth 授权服务器”时,请使用以下命令创建与 Snowflake 的安全集成。它来自 https://docs.snowflake.com/en/user-guide/oauth-powerbi.html 。如果您遵循上一篇文章,则需要
create security integration powerbi
type = external_oauth
enabled = true
external_oauth_type = azure
external_oauth_issuer = '<AZURE_AD_ISSUER>'
external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
external_oauth_audience_list = ('https://analysis.windows.net/powerbi/connector/Snowflake')
external_oauth_token_user_mapping_claim = 'upn'
external_oauth_snowflake_user_mapping_attribute = 'login_name'
external_oauth_any_role_mode = 'ENABLE';
PowerBI 用户无法更改他们的角色,因此请确保他们在 Snowflake 中的默认角色与您在第 1 步中配置的相同,以显示或配置您的 OAuth AppRole 允许任何如下角色:
{
"allowedMemberTypes": [
"Application"
],
"description": "PowerBI users",
"displayName": "PowerBI Users",
"id": "<your unique id here>",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "session:ROLE:ANY"
}
我的最后一条错误消息是用户没有授予角色(他们确实这样做了),但是当我在 Snowflake 上重新授予用户角色时,它终于起作用了。
让 PowerBI + Snowflake + Azure AD SSO 一起工作很痛苦,但这是可能的。 MFA 也能正常工作。
您可能需要将 AAD 用户添加到您在 Azure 门户企业应用程序的第 2 步中创建的应用程序。不过我还没有测试过,我自己的帐户可以使用,因为我是我刚刚创建的应用程序的所有者。