首页 > 解决方案 > 使用 R Workbench 中的 Okta 连接到 Snowflake

问题描述

嗨,我正在尝试从 R Workbench 连接到雪花。这是与 okta 连接时收到的错误。

con <- dbConnect(jdbcDriver, "jdbc:snowflake://company.snowflakecomputing.com/?authenticator=https://company.okta.com/", 'name@company.com', 'pass')

2021 年 9 月 16 日晚上 10:07:42 net.snowflake.client.core.SessionUtil handleFederatedFlowError 严重:使用https://company.okta.com/进行身份验证时出现 IOException java.net.MalformedURLException:没有协议:java.net.URL 的 /login/cert。(URL.java:611)在 java.net.URL.(URL.java:508)在 java.net.URL.(URL .java:457) 在 net.snowflake.client.core.SessionUtil.isPrefixEqual(SessionUtil.java:1218) 在 net.snowflake.client.core.SessionUtil.federatedFlowStep4(SessionUtil.java:999) 在 net.snowflake.client。在 net.snowflake.client.core.SessionUtil.newSession(SessionUtil.java:378) 在 net.snowflake.client.core.SessionUtil.openSession(SessionUtil.java:284) 的 core.SessionUtil.getSamlResponseUsingOkta(SessionUtil.java:1206)在 net.snowflake.client.core.SFSession.open(SFSession.java:446) 在 net.snowflake.client.jdbc.DefaultSFConnectionHandler.initialize(DefaultSFConnectionHandler.java:104) 在 net.snowflake.client.jdbc.DefaultSFConnectionHandler.initializeConnection (DefaultSFConnectionHandler.java:79) 在 net.snowflake.client.jdbc。SnowflakeConnectionV1.initConnectionWithImpl(SnowflakeConnectionV1.java:116) 在 net.snowflake.client.jdbc.SnowflakeConnectionV1.(SnowflakeConnectionV1.java:96) 在 net.snowflake.client.jdbc.SnowflakeDriver.connect(SnowflakeDriver.java:164) 在 java。 sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:247)

2021 年 9 月 16 日晚上 10:07:43 net.snowflake.client.core.SessionUtil handleFederatedFlowError 严重:使用https://company.okta.com/进行身份验证时出现 IOException java.net.MalformedURLException:没有协议:java.net.URL 的 /login/cert。(URL.java:611)在 java.net.URL.(URL.java:508)在 java.net.URL.(URL .java:457) 在 net.snowflake.client.core.SessionUtil.isPrefixEqual(SessionUtil.java:1218) 在 net.snowflake.client.core.SessionUtil.federatedFlowStep4(SessionUtil.java:999) 在 net.snowflake.client。在 net.snowflake.client.core.SessionUtil.newSession(SessionUtil.java:378) 在 net.snowflake.client.core.SessionUtil.openSession(SessionUtil.java:284) 的 core.SessionUtil.getSamlResponseUsingOkta(SessionUtil.java:1206)在 net.snowflake.client.core.SFSession.open(SFSession.java:446) 在 net.snowflake.client.jdbc.DefaultSFConnectionHandler.initialize(DefaultSFConnectionHandler.java:104) 在 net.snowflake.client.jdbc.DefaultSFConnectionHandler.initializeConnection (DefaultSFConnectionHandler.java:79) 在 net.snowflake.client.jdbc。SnowflakeConnectionV1.initConnectionWithImpl(SnowflakeConnectionV1.java:116) 在 net.snowflake.client.jdbc.SnowflakeConnectionV1.(SnowflakeConnectionV1.java:96) 在 net.snowflake.client.jdbc.SnowflakeDriver.connect(SnowflakeDriver.java:164)

.jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1], 中的错误:net.snowflake.client.jdbc.SnowflakeSQLException: JDBC 驱动程序遇到通信错误。消息:打开连接时遇到异常:无协议:/login/cert。

标签: rjdbcsnowflake-cloud-data-platform

解决方案


我认为 Okta 是用 MFA 设置的。如果是这样,则错误是因为 Snowflake 驱动程序不支持启用 MFA 的 Okta 的本机身份验证。

如果需要使用 Okta + MFA,则需要使用 externalbrowser 作为身份验证器选项。


推荐阅读