Spring Boot 如何在本地网络上运行Sping Boot 和Keycloak

fslejnso  于 2023-06-29  发布在  Spring
关注(0)|答案(3)|浏览(154)

我有一个基于微服务的项目,使用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
s1ag04yj

s1ag04yj1#

在你的本地机器上通过它的IP地址尝试它,如果它没有密钥斗篷。如果它工作尝试禁用您的防病毒。如果你也可以发布错误和部署信息。

hs1ihplo

hs1ihplo2#

要做的第一件事是将Keycloak配置中的hostname设置为对所有设备有效的值。此属性用于设置颁发者声明,如果颁发者留给localhost(其他设备不会从localhost获取JWK-set...),则可能会出现令牌验证问题。
以下是我在开发机器上以“生产”模式运行Keycloak的完整配置:

db=postgres
db-username=keycloak
db-password=change-me
db-url=jdbc:postgresql://localhost/keycloak

# Hostname of my MSI Bravo on the local network
hostname=bravo-ch4mp

http-enabled=true
http-port=8442
https-key-store-file=change-me.jks
https-key-store-password=change-me
https-port=8443

除了安装Postgresqlgenerating self-signed certificates之外,我还为本地网络配置了一个小型DNS服务器,在本地网络中,我的机器无法通过名称解析(有些路由器包括DNS,有些没有...)。我的证书生成库中MaraDNS配置的详细信息。

hl0ma9xz

hl0ma9xz3#

经过大量的挖掘,我发现防火墙中有一条规则可以阻止JDK-19的java.exe访问设备的端口。
具有讽刺意味的是,只有Keycloak使用JDK-19,而其他人使用的是旧版本。所以问题只出在密钥斗篷上。
尽管我制定了一个允许keycloak的规则,但在其代码中调用java.exe的事实使该规则无效,因为阻止规则的优先级高于允许规则。

相关问题