Keycloakという認証・認可のOSSアプリを試しているのですが、タイトルのとおりローカルホスト以外からアクセスできずに少し詰まったので対応の仕方。

環境


  • Keycloak 3.4.3

現象


借りたてのVPSにnginxを構築してリバースプロキシでKeycloak向けのサブドメインに割り振りして接続…というのを行っていたのですが…

Keycloakをインストールしたサーバ内でcurl localhost:8080だとレスポンスが返ってくるのですが、それ以外のパターンだと接続拒否かBadGateWayになってしまっていました。

原因


いろいろ疑ったのですが、そもそも対象のVPSのIPアドレス + Keycloakのポートを指定してつながらない時点でnginxは関係ない話です。で、こういうのは往々にしてアプリケーション側、すなわちKeycloak側で許可するIPが制限されていたりします。ドキュメントを読み漁った結果、その旨が書いてありました

7.1. Bind Addresses
By default Keycloak binds to the localhost loopback address 127.0.0.1. That’s not a very useful default if you want the authentication server available on your network.

※ Keycloakのドキュメントより

対応


前述のドキュメントに記載されていますが、起動スクリプト実行時に-bオプションで許可するIPを指定できます。例えば、すべてのIPからの接続を許可する場合は下記のとおりです。

1
standalone.sh -b 0.0.0.0

上記で無事VPS上のKeycloakにアクセスすることができました。
この他にも、設定ファイルに記述することで設定することもできるようです。そっちは試してないのですが…。