LoginSignup
1
1

Keycloakにログインできなくなった時の対策

Posted at

先日 keycloak に Duo security の 2FA を追加しました。
https://qiita.com/uturned0/items/8f45ce492ec59680f9f2

client=security-admin-console にも適用したのでkeycloak admin consoleに入る時もduoが必要です。ただ、もしduoのサービスが障害で落ちていたら console に入れなくなるので、その時に Duo を無効化する方法を調べました。

prerequicites

Keycloak 22を使ってます。v19までのWildflyでは非対応なので、quarkusになってない人はupgradeしましょう。

参考 https://qiita.com/uturned0/items/e9256c48ccba6f588d79

How to update Authentication flow

方針として、admin consoleにかかってるauthentication flowをデフォルトに戻すことにします。そうすればid/pwだけでログインできるようになります。

keycloak serverにloginします。

cd /opt/keycloak/bin
./kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin
admin のパスワードを入力します。

# security admin console の client id を探す
./kcadm.sh get clients -r master --fields id,clientId | grep -B1 security-admin-console

ADMIN_CLIENT=58333d37-3729-4256-a8e3-d1640903caa7
 
# 今のauthenticaton flowを確認する
./kcadm.sh get clients/$ADMIN_CLIENT -r master | grep -A2 authenticationFlowBindingOverrides


# defaultのauthentication flowを探す
./kcadm.sh get authentication/flows -r master | grep -B1 '"alias" : "browser"'
  "id" : "8934619f-1111-484a-8da4-36c86a41dd26",
  "alias" : "browser",

8934619f... browser(Duoなし)authentication flow。それでupdateする

DEFAULT_FLOW=8934619f-1111-484a-8da4-36c86a41dd26

 # flowを上書き
./kcadm.sh update clients/$ID -r master -s "authenticationFlowBindingOverrides={\"browser\":\"$DEFAULT_FLOW\"}"

これで id/pwだけでloginできるようになりました。

当然ですが緊急時の作業なので利用にはお気をつけを。

password reset

ちなみにこれでユーザパスワードはリセットできますが、先にloginしないとできないので、admin password忘れた場合はこれではできません。

./kcadm.sh get users -r {realm-name} -q username={username}

./kcadm.sh update users/{user-id} -r master -s "credentials=[{type:'password', value:'new-password', temporary:false}]"

DBのadmin userを消して、keycloak起動し直すときにKC_ADMIN_PASSWORDかなんかの環境変数で新たにユーザ作ってもらうしかないんじゃないかと。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1