azure - 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?
解决方案
所以我自己解决了这个问题。
在“点到站点”配置中,我选中了“IKEv2 VPN”复选框。这必须取消选中。也许这在某处有记录。
我是如何到达那里的:我在互联网上发现了一些关于“同步”Azure VPN 网关的信息。
似乎必须同步 VPN 网关。这在 Web 应用程序的“虚拟网络集成”选项卡上是不可能的。但也可以在 webapp 的“服务计划”上配置网络。还有一个网络部分,然后是另一个 VNET 集成部分。选择您的 VNET,然后您将获得另一个“虚拟网络集成”选项卡。
但这次还有一个额外的“同步网络”按钮。按下。当检查“ IKEV2 VPN”选项时,我发现了一个错误,指出了不良配置。
推荐阅读
- tableau-api - 无法向公众发布 Tableau 仪表板
- c# - 经过一段时间后重试Azure服务总线上的消息?
- javascript - 使用描边和文本缩放画布
- timer - STM32F103 定时器中断卡在 Base_Start
- python - Anaconda 中的“验证交易:失败”
- kivy - Kivy 基于鼠标点击动态地实例化小部件
- unix - 仅当基于变量和特殊字符满足条件时才查找和替换值
- android - 如何使用 kotlin 将时间从服务器转换为本地区域?
- spring - 将 JWT 与 @PathVariable 一起使用,但仅允许特定用户访问 url
- android-studio - 我创建了两个“凸起的按钮”,但只有一个显示。这里有什么问题?