首页 > 解决方案 > Azure java webapp:安全管理器阻止网络访问

问题描述

我有一个 Azure java webapp,想通过 JDBC 将它连接到某个 VNET 中的 Oracle 数据库。Web 应用程序通过 VPN 点到站点连接到 VNET。创建连接失败。所以我查看了日志,发现:

   Caused by: java.net.SocketException: Permission denied: connect
   at sun.nio.ch.Net.connect0(Native Method) ~[?:1.8.0_144]
   at sun.nio.ch.Net.connect(Net.java:454) ~[?:1.8.0_144]
   at sun.nio.ch.Net.connect(Net.java:446) ~[?:1.8.0_144]
   at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648) ~[?:1.8.0_144]
   at java.nio.channels.SocketChannel.open(SocketChannel.java:189) ~[?:1.8.0_144]
   at oracle.net.nt.TimeoutSocketChannel.<init>(TimeoutSocketChannel.java:81) ~[ojdbc8.jar:12.2.0.1.0]
   at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:169) ~[ojdbc8.jar:12.2.0.1.0]

所以似乎有一个安全管理器正在运行,它阻止网络访问。

我使用的是 Oracle 瘦 JDBC 驱动程序,因此不涉及本机库。该网络应用程序是 64 位 Windows。Java 是版本 8。我使用的是最新的 Tomcat 8.0 版本。

如何配置或关闭它?是否可以在 WAR 文件中进行配置?我认为不可能编辑 catalina.policy 文件,这是一个 Azure Webapp。


似乎这取决于 IP 地址,如果 IP 地址在公共互联网中,则建立连接。但是随着10 .. .* VNET 中数据库的非公共 IP 引发 java.net.SocketException。会不会是一些网络错误,如“没有到主机的路由”或“连接被拒绝”被翻译成这个 SocketException?

标签: azuretomcatazure-web-app-service

解决方案


所以我自己解决了这个问题。

在“点到站点”配置中,我选中了“IKEv2 VPN”复选框。这必须取消选中。也许这在某处有记录。

我是如何到达那里的:我在互联网上发现了一些关于“同步”Azure VPN 网关的信息。

似乎必须同步 VPN 网关。这在 Web 应用程序的“虚拟网络集成”选项卡上是不可能的。但也可以在 webapp 的“服务计划”上配置网络。还有一个网络部分,然后是另一个 VNET 集成部分。选择您的 VNET,然后您将获得另一个“虚拟网络集成”选项卡。

但这次还有一个额外的“同步网络”按钮。按下。当检查“ IKEV2 VPN”选项时,我发现了一个错误,指出了不良配置。


推荐阅读