r - 使用 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。
解决方案
我认为 Okta 是用 MFA 设置的。如果是这样,则错误是因为 Snowflake 驱动程序不支持启用 MFA 的 Okta 的本机身份验证。
如果需要使用 Okta + MFA,则需要使用 externalbrowser 作为身份验证器选项。
推荐阅读
- git - 如何在推送中获取最新的提交消息并验证消息以某种正则表达式模式开头?
- mysql - 用户能否编写复杂的查询,只能访问视图?
- python - 索引错误:Python
- c# - Join tables from different databases (ADO.NET)
- java - Why my PrintWriter is not sending data to server?
- php - What does this line of code mean in PHP? h(u($_GET[]))
- r - How does caret calculate sensitivity and specificity in resamples?
- c# - C# round off to specific values
- c# - CustomValidator OnServerValidate 方法确定收到的验证器 ID
- c# - .NET/C# 字典锁定协议