43

enter image description here

I am using Keycloak (version 1.0.4.Final) in JBOSS AS 7.1.1 server. The server is on Amazon AWS.

I am able to start the jboss server with keycloak. i can see the keycloak default screen while hitting the URL - ServerIP:8080/auth

But when i am clicking on the Administration Consolelink to go to the login screen. I am getting a page saying - HTTPS required

The server is on AWS, changing to "ssl-required" : "none", in General Adapter Config has not helped.

How to resolve this issue?

Edit: I was not getting this issue in keycloak-1.2.0.Beta1 version.

Arjit
  • 3,290
  • 1
  • 17
  • 18
  • Put note here, because most answers are focusing to disable ssl, which is totally in wrong direction. Jump to read the answer with port 8443 – Bill Sep 26 '22 at 04:44

8 Answers8

57

I was running the key cloak inside a docker container, The keycloak command line tool was avaialble inside the keycloak container.

docker exec -it {contaierID} bash
cd keycloak/bin
./kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin
./kcadm.sh update realms/master -s sslRequired=NONE

If the admin user is not created, then the user can be created via this command.

./add-user-keycloak.sh --server http://ip_address_of_the_server:8080/admin --realm master --user admin --password adminPassword

Update: For the newer versions the file in available in the following path: /opt/jboss/keycloak/bin

Nirojan Selvanathan
  • 10,066
  • 5
  • 61
  • 82
46

If you want to disable it for your realm and have no possibility to use UI, do it directly on the database:

update REALM set ssl_required='NONE' where id = 'master';

Note - Restart keycloak for effect

vijay
  • 10,276
  • 11
  • 64
  • 79
Valelik
  • 1,743
  • 2
  • 18
  • 22
  • If you have only SSH access and Keycloak is running with embedded DB, you may use native DB client, e.g. for H2: java -cp .jar org.h2.tools.Shell -url "jdbc:h2:file:" -user -password -sql "update REALM set ssl_required='NONE' where id = 'master'" – Vladimir Salin Apr 26 '17 at 07:45
  • 3
    One also has to restart keycloak after doing this. – vikas027 Jul 20 '17 at 01:41
  • i get [org.keycloak.events] (default task-1) type=LOGIN_ERROR after doing this – joeabala Mar 20 '21 at 04:26
  • Using kcadm cli is the better solution and does not require a restart – rob2universe Oct 09 '22 at 04:26
  • @VladimirSalin Error: org.h2.jdbc.JdbcSQLException: The database is read only; SQL statement: after executing update query. I used default username and password as "sa" , "sa" – Achyut Nov 10 '22 at 18:32
  • if you have quay.io/keycloak/keycloak:21 image, you can use this SQL script: UPDATE realm SET ssl_required='NONE' where name = 'master'; – Motixa Apr 11 '23 at 12:01
20

You can use the keycloak command line admin tool to change the setting as long as it can authenticate to a local IP address. You can temporarily launch Keycloak on localhost to make this change.

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

Obviously, make sure to replace realm names, username, port, etc as required.

For more information on getting started with the Admin CLI, see documentation: Server Administration: Admin CLI

Sergey Ponomarev
  • 2,947
  • 1
  • 33
  • 43
thelr
  • 1,134
  • 11
  • 30
  • 1
    this is a better solution as it is not required to restart Keycloak (a docker container) in my case – vikas027 Dec 14 '18 at 03:25
  • running `./kcadm.sh update realms/master -s sslRequired=NONE --server http://localhost:8080 --realm master --user username` helped – Pragalathan M Feb 27 '23 at 16:20
18

This is quite old and now on release versions (I am using Keycloak 1.9.3 demo / Developer bundle), however to save some poor soul some time....

Keycloak now defaults to HTTPS for all external IP addresses. Unfortunately, from what I can tell the Wildfly instance that comes with the demo bundle does NOT support HTTPS. Makes for a pretty insane default if you're installing Keycloak on a remote machine as there is effectively no way to access the Keycloak admin console out of the box.

At this point, you have two options; 1) Install HTTPS in Wildfly or 2) Tunnel via SSH into the remote machine and proxy your browser through it, go to the admin console and turn off the SSL requirement (Realm Settings -> Login -> Require SSL). This works because SSL is not required for local connections.

Remember to first create the admin user by going to $KEYCLOAK_HOME/keycloak/bin and running ./add-user-keycloak -r master -u <> -p <>. This add user script is not interactive like the Wildfly add user script is, you need to put it all on the command line.

Hope this helps!

Brooks
  • 7,099
  • 6
  • 51
  • 82
11

It's a bit late but I'm sure people will find this useful. If you are using docker to run keycloak, instead of forwarding port 8080, forward 8443 and it works like charm.

docker run -p 8443:8443 -e KEYCLOAK_USER=username -e KEYCLOAK_PASSWORD=password jboss/keycloak
Rewanth Tammana
  • 1,453
  • 17
  • 20
  • you have to access https[://]URL:8443. if still doesn't work, try downgrading the version of keycloak – Rewanth Tammana Jan 06 '21 at 17:55
  • the methd proposed by @Nirojan Selvanathan is working fine – Bruce wayne - The Geek Killer Jan 07 '21 at 08:19
  • Works with latest version 15.x. Try `docker run -d --name keycloak -p 8443:8443 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e DB_VENDOR=h2 quay.io/keycloak/keycloak:15.0.1` Keycloak will auto-generate self-signed certificates. Access your site using HTTPS. Example - `https://your-hostname:8443/auth/` – aunlead Aug 18 '21 at 18:51
  • 1
    This should be the accept answer, more than to avoid ssl setup by other solutions. By the way google chrome blocks you to access url `https://your-hostname-keycloak:8443`, switch to use other browsers , such as Safari – Bill Sep 26 '22 at 04:41
1

I testing in docker keycloak: probe that: Realm Settings -> Login -> Require SSL and put in off. or docker exec YOUR_DOCKER_NAME /opt/jboss/keycloak/bin/jboss-cli.sh --connect \ "/subsystem=undertow/server=default-server/http-listener=default:read-resource"

Yurifull
  • 373
  • 2
  • 5
1

If you are deploying keycloak on kubernetes you can try setting up following ENV VAR

spec:
  containers:
  - name: keycloak
    env:
    - name:  PROXY_ADDRESS_FORWARDING
      value: "true"
Vadim Sluzky
  • 259
  • 1
  • 2
0

try to connect the keycloak database and update the table

update REALM set ssl_required='EXTERNAL' where name = 'master';

then restart docker

docker compose restart
BoMBxDEV
  • 21
  • 2