我有一个基于微服务的项目,使用Keycloak,Sping Boot 应用程序和其他...该项目在localhost上运行良好。现在我想在同一个本地网络上的其他设备上测试它,比如我的手机。
我知道我的PC的IP地址(它在路由器上保留,因此不会更改)。
但不知为何我无法访问它。
1.首先,我尝试测试连接到Keycloak管理控制台它失败***
1.我检查了Keycloak配置,以检查应用程序是否暴露于外部流量 ,它确实 *
1.我确信问题出在我的防火墙上,所以我禁用了它 * 它工作了 *
1.我试着创建一些自定义规则来允许进程流量我找不到密钥斗篷程序**
1.我尝试创建自定义规则,以将端口暴露给网络IP池中的任何程序或进程的任何传入连接***它不起作用***
1.我试图创建自定义规则,以允许我的手机的IP地址访问任何端口应用程序或进程 * 仍然没有工作 *
我该怎么办?我不想禁用防火墙
承载后端的PC使用Windows Defender防火墙。(不判断,这是为了测试前prod)
我在和一个叫
kc.bat start-dev
Sping Boot 应用程序打包为JAR
java -jar PATH_TO_JAR/jarname.jar com.example.package.ClassName -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
3条答案
按热度按时间s1ag04yj1#
在你的本地机器上通过它的IP地址尝试它,如果它没有密钥斗篷。如果它工作尝试禁用您的防病毒。如果你也可以发布错误和部署信息。
hs1ihplo2#
要做的第一件事是将Keycloak配置中的
hostname
设置为对所有设备有效的值。此属性用于设置颁发者声明,如果颁发者留给localhost
(其他设备不会从localhost获取JWK-set...),则可能会出现令牌验证问题。以下是我在开发机器上以“生产”模式运行Keycloak的完整配置:
除了安装Postgresql和generating self-signed certificates之外,我还为本地网络配置了一个小型DNS服务器,在本地网络中,我的机器无法通过名称解析(有些路由器包括DNS,有些没有...)。我的证书生成库中MaraDNS配置的详细信息。
hl0ma9xz3#
经过大量的挖掘,我发现防火墙中有一条规则可以阻止JDK-19的java.exe访问设备的端口。
具有讽刺意味的是,只有Keycloak使用JDK-19,而其他人使用的是旧版本。所以问题只出在密钥斗篷上。
尽管我制定了一个允许keycloak的规则,但在其代码中调用java.exe的事实使该规则无效,因为阻止规则的优先级高于允许规则。