3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Keycloakをお手軽に試したい(1)

Last updated at Posted at 2019-06-19

[サンプルアプリケーションでKeycloakのSSO動作を確認してみよう (1/3)]
(https://www.atmarkit.co.jp/ait/articles/1710/04/news008.html)
という記事を見つけたが、バージョンが「3.2.0.Final」である。
もっとお手軽にできないか探したのが
jboss/keycloak-examplesです。
Deprecated, see https://github.com/keycloak/keycloak-quickstarts for new QuickStarts.
と記載があります。QuickStarts面倒なんだよなっと思い、とりあえず動かしてみた。「4.5.0.Final」ベースのようであるが動かない。

C:\kazu\ex>docker run -it jboss/keycloak-examples
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss/keycloak-demo/keycloak

  JAVA: /usr/lib/jvm/java/bin/java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

03:13:47,958 INFO  [org.jboss.modules] (main) JBoss Modules version 1.8.5.Final
03:13:48,273 INFO  [org.jboss.msc] (main) JBoss MSC version 1.4.2.Final
03:13:48,289 INFO  [org.jboss.threads] (main) JBoss Threads version 2.3.2.Final
03:13:48,589 INFO  [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: WildFly Full 13.0.0.Final (WildFly Core 5.0.0.Final) starting
03:13:49,799 ERROR [org.jboss.as.controller] (Controller Boot Thread)

OPVDX001: Validation error in standalone.xml -----------------------------------
|
|  32:     <extension module="org.wildfly.extension.security.manager"/>
|  33:     <extension module="org.wildfly.extension.undertow"/>
|  34:     <extension module="org.keycloak.keycloak-server-subsystem" xmlns=""/>
|          ^^^^ 'extension' can't appear more than once within the extensions element
|
|  35:     <extension module="org.keycloak.keycloak-adapter-subsystem" xmlns=""/>
|  36:     <extension module="org.keycloak.keycloak-saml-adapter-subsystem" xmlns=""/>
|  37: </extensions>
|
| A 'extension' element first appears here:
|
|  33:     <extension module="org.wildfly.extension.undertow"/>
|  34:     <extension module="org.keycloak.keycloak-server-subsystem" xmlns=""/>
|  35:     <extension module="org.keycloak.keycloak-adapter-subsystem" xmlns=""/>
|          ^^^^
|
|  36:     <extension module="org.keycloak.keycloak-saml-adapter-subsystem" xmlns=""/>
|  37: </extensions>
|  38: <management>
|
| The primary underlying error message was:
| > ParseError at [row,col]:[34,9]
| > Message: WFLYCTL0198: Unexpected element 'extension' encountered
|
|-------------------------------------------------------------------------------

03:13:49,808 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration
        at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:143)
        at org.jboss.as.server.ServerService.boot(ServerService.java:377)
        at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:372)
        at java.lang.Thread.run(Thread.java:748)

03:13:49,813 FATAL [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0056: Server boot has failed in an unrecoverable manner; exiting. See previous messages for details.
03:13:49,845 INFO  [org.jboss.as] (MSC service thread 1-3) WFLYSRV0050: WildFly Full 13.0.0.Final (WildFly Core 5.0.0.Final) stopped in 23ms

C:\kazu\ex>

これはもう自分で Docker イメージを作るかなということで、historyからの再構築したDockerfileは↓です。多分、オリジナルのベースOSはredhatだと思うけど、そこはcentosで。

from centos
RUN yum update -y && yum -y install xmlstarlet saxon augeas bsdtar unzip && yum clean all
RUN groupadd -r jboss -g 1000 && useradd -u 1000 -r -g jboss -m -d /opt/jboss -s /sbin/nologin -c "JBoss user" jboss && chmod 755 /opt/jboss
WORKDIR /opt/jboss
RUN yum -y install java-1.8.0-openjdk-devel && yum clean all
USER jboss
ENV JAVA_HOME=/usr/lib/jvm/java
ENV KEYCLOAK_VERSION=4.5.0.Final
ENV JBOSS_HOME=/opt/jboss/keycloak-demo/keycloak
ENV MAVEN_VERSION=3.3.9
ENV LAUNCH_JBOSS_IN_BACKGROUND=1
USER root
RUN curl -fsSL https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar xzf - -C /usr/share && mv /usr/share/apache-maven-$MAVEN_VERSION /usr/share/maven && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
ENV MAVEN_HOME=/usr/share/maven
USER jboss                                                                                                            
RUN cd /opt/jboss \
  && curl -s ttp://downloads.jboss.org/keycloak/$KEYCLOAK_VERSION/keycloak-demo-$KEYCLOAK_VERSION.zip -o tmp.zip \
  && unzip tmp.zip -d . \
  && mv /opt/jboss/keycloak-demo-$KEYCLOAK_VERSION /opt/jboss/keycloak-demo
RUN mvn package -f /opt/jboss/keycloak-demo/examples/preconfigured-demo/pom.xml \
  && rm -rf ~/.m2/repository
RUN cd /opt/jboss/keycloak-demo/examples/preconfigured-demo \
  && find -name *.war | grep -v ear | xargs -I {} cp {} /opt/jboss/keycloak-demo/keycloak/standalone/deployments/ \
  && cp /opt/jboss/keycloak-demo/examples/preconfigured-demo/testrealm.json /opt/jboss/keycloak-demo/keycloak/
ADD docker-entrypoint.sh /opt/jboss/
EXPOSE 8080                                                                                                             ENTRYPOINT ["/opt/jboss/docker-entrypoint.sh"]
CMD ["-b" "0.0.0.0" "-bmanagement" "0.0.0.0" "-Dkeycloak.import=/opt/jboss/keycloak-demo/keycloak/testrealm.json"]
CMD ["/bin/sh" "-c" "/bin/bash"]

docker-entrypoint.shを追加するので、それはこれです。

docker-entrypoint.sh
# !/usr/bin/env bash

if [ $KEYCLOAK_USER ] && [ $KEYCLOAK_PASSWORD ]; then
    /opt/jboss/keycloak-demo/keycloak/bin/add-user-keycloak.sh -u $KEYCLOAK_USER -p $KEYCLOAK_PASSWORD >/dev/null
fi

exec /opt/jboss/keycloak-demo/keycloak/bin/standalone.sh $@
exit $?

ちょっと時間がないので、後でデバッグしよう。QuickStarts試せって(^^;

自分でDockerイメージ作って試したら、元々のものと同じエラーとなります。「6.0.1」のstandalone.xml見比べると以下の部分がいけていなそうです。

<extension module="org.keycloak.keycloak-server-subsystem" xmlns=""/>
⇒
<extension module="org.keycloak.keycloak-server-subsystem"/>

xmlns=""の部分を取った、standalone.xmlを用意し、以下のDockerfileでイメージを作成する。

from jboss/keycloak-examples
COPY standalone.xml /opt/jboss/keycloak-demo/keycloak/standalone/configuration

取り合えず、立ち上げ時のエラーは出なくなった(^^)/
その後、standalone.xmlを用意するのも面倒なので、sedで編集することとしました。

from jboss/keycloak-examples
RUN sed -i '34,36s/ xmlns=""//' /opt/jboss/keycloak-demo/keycloak/standalone/configuration/standalone.xml

作ったイメージを使って、起動してみる。

C:\kazu\ex>docker run -it -p 8080:8080 kazu:keycloak
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss/keycloak-demo/keycloak

  JAVA: /usr/lib/jvm/java/bin/java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

13:44:18,432 INFO  [org.jboss.modules] (main) JBoss Modules version 1.8.5.Final
13:44:22,139 INFO  [org.jboss.msc] (main) JBoss MSC version 1.4.2.Final
13:44:22,251 INFO  [org.jboss.threads] (main) JBoss Threads version 2.3.2.Final
13:44:23,181 INFO  [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: WildFly Full 13.0.0.Final (WildFly Core 5.0.0.Final) starting
     (省略)
13:46:22,237 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://0.0.0.0:9990
13:46:22,240 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 13.0.0.Final (WildFly Core 5.0.0.Final) started in 127673ms - Started 1301 of 1579 services (603 services are lazy, passive or on-demand)

うん、keycloakは動いているね。
authのURLにアクセスしたら以下のメッセージが出た。http://localhost:8080/auth
にアクセスしているんだけど。

You need local access to create the initial admin user. 

Open http://localhost:8080/auth 
or use the add-user-keycloak script.

adminユーザを登録しよう。

[jboss@6e22a58712f3 ~]$ /opt/jboss/keycloak-demo/keycloak/bin/add-user-keycloak.sh --user admin --password admin
Added 'admin' to '/opt/jboss/keycloak-demo/keycloak/standalone/configuration/keycloak-add-user.json', restart server to load user

また、demoプログラム用のユーザを登録しました。product-portalにアクセスしたけど、Bad Requestとなった。Windows 10だけど、homeとproで動き違う気がする(proではDocker for Windowsで、homeはDocker Toolboxです)。proでforbiddenなったが自分で作ったユーザにroleが無かっただけだった。homeもキャッシュをクリアしたら無事に動きました。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?