如何解决浏览器未使用 MSSQL JDBC 驱动程序 MFA 身份验证在客户端打开
目前我们在 Azure 上有一个数据库。我们在 Headless linux 服务器上部署了一个 Web 应用程序。我们使用 Active Directory 用户从我们的应用程序连接到这个数据库。此 Active Directory 用户已在 Azure 上启用 MFA。该应用程序使用 MSsql JDBC 驱动程序 (mssql-jdbc-9.2.1) 以交互模式对该数据库进行身份验证。
驱动程序具有以下代码,用于在身份验证期间打开浏览器以在 Microsoft 门户上提供 AD 凭据。
private void openDefaultSystembrowser(URL url) {
try {
if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Action.broWSE)) {
Desktop.getDesktop().browse(url.toURI());
LOG.debug("Opened default system browser");
} else {
throw new MsalClientException("Unable to open default system browser","desktop_browser_not_supported");
}
} catch (IOException | URISyntaxException var3) {
throw new MsalClientException(var3);
}
}
我们期望驱动程序会在客户端打开浏览器,因为我们的 Web 服务器正在无头模式下运行。因此,当驱动程序尝试打开浏览器时,我们收到以下异常:
com.microsoft.aad.msal4j.MsalClientException: Unable to open default system browser
at com.microsoft.aad.msal4j.AcquiretokenByInteractiveFlowsupplier.openDefaultSystembrowser(AcquiretokenByInteractiveFlowsupplier.java:116)
at com.microsoft.aad.msal4j.AcquiretokenByInteractiveFlowsupplier.getAuthorizationResult(AcquiretokenByInteractiveFlowsupplier.java:61)
at com.microsoft.aad.msal4j.AcquiretokenByInteractiveFlowsupplier.execute(AcquiretokenByInteractiveFlowsupplier.java:37)
at com.microsoft.aad.msal4j.AuthenticationResultsupplier.get(AuthenticationResultsupplier.java:59)
at com.microsoft.aad.msal4j.AuthenticationResultsupplier.get(AuthenticationResultsupplier.java:17)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
有什么方法可以将浏览器打开请求从无头 linux 服务器委托给客户端吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。