之前在本地搭建keycloak可是相当简单快速,解压然后配置外网访问一下即可,万万没想到在部署在服务器时出现诸多问题

系统: centos 7
keycloak:10.0.2 OpenJDK
安装目录:/opt/keycloak-10.0.2

cd /opt    
wget https://downloads.jboss.org/keycloak/10.0.2/keycloak-10.0.2.zip
unzip keycloak-10.0.2.zip
cd keycloak-10.0.2

这样就相当于安装完成,我这边用的是standalone模式,所以运行

add-user-keycloak.sh -r master -u admin -p admin  #添加用户    
./bin/standalone.sh

然后访问locahost:8080/auth/admin

然而keycloak 默认只能locahost访问,所以还得设置外网访问
有两种方式,
1:修改配置文件

vi ./standalone/configuration/standalone.xml
<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
    </interface>
    <interface name="public">
        <inet-address value="${jboss.bind.address:127.0.0.1}"/>
    </interface>
</interfaces>

将127.0.0.1 修改成你服务ip或者0.0.0.0,0.0.0.0为不限制ip访问
2:运行./bin/standalone.sh 时加上-b参数 ,即

./bin/standalone.sh -b 你要设置的IP

ps:需要注意默认使用8080端口,需要开放8080端口,特别时使用阿里云的服务器,需要到控制面板放行8080端口


我遇到的问题:

  1. 列表外网地址无法设置,设置成服务器地址会频繁报错,无法运行,只能设置成0.0.0.0,外网才能访问

    未知原因

  2. 服务起来后一致无法访问。本地locahost访问正常

    keycloak默认的端口8080被防火墙拦截了,需要开放8080端口,特别时使用阿里云的服务器,需要到控制面板放行8080端口

  3. 有一次启动时,服务报错,说已经有相同实例,无法启动

    忘记关掉keycloak或者keycloak错误但进程还存在导致的,找出进程杀掉

    ps -ef|grep keycloak
    kill 进程号

  4. 访问http://ip:8080/auth/admin时会重定向到http://ip:8080/auth/realms/master/protocol/openid-connect/auth?client_id=security-admin-console 然后提示HTTPS required

    明明用的是http访问,怎么会报https的错误,去google了一下资料,发现keyclocak在外网访问的情况下,会强制使用https访问,这TM不是坑爹么!好在在stackoverflow查到一个解决方案:

    ./bin/kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin
    ./bin/kcadm.sh update realms/master -s sslRequired=NONE

这样这可以把强制https给关掉了