[Keycloakをお手軽に試したい(1)]
(https://qiita.com/suzanHud/items/65aba4b9ef9b2c9b1017)で、ユーザ登録を「add-user-keycloak.sh」で行いました。
「docker-entrypoint.sh」を見ると判りますが、
シェル変数か環境変数でKEYCLOAK_USERとKEYCLOAK_PASSWORDが定義されている場合、
「add-user-keycloak.sh」が実行されます。
起動を以下とします。
docker run -it -e "KEYCLOAK_USER=admin" -e "KEYCLOAK_PASSWORD=admin" -p 8080:8080 kazu:keycloak
これでユーザ登録は不要になります。「6.0.1」のjboss/keycloakと同じですね。
[サンプルアプリケーションでKeycloakのSSO動作を確認してみよう (1/3)]
(https://www.atmarkit.co.jp/ait/articles/1710/04/news008.html)からデモのURLを転載します。
アプリケーション | URL |
---|---|
product-app | http://localhost:8080/product-portal/ |
customer-app | http://localhost:8080/customer-portal/ |
database-service | http://localhost:8080/database/ |
6.0.1でQuickstarts
今までの作業で、大体の設定が分かってきた。
Dockerfileで書くと、こんな感じでしょうか。
from centos
RUN yum update -y && yum -y install xmlstarlet saxon augeas bsdtar unzip java-1.8.0-openjdk-devel git file which && 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
ENV KEYCLOAK_VERSION=6.0.1
COPY keycloak-$KEYCLOAK_VERSION.zip /opt/jboss
COPY keycloak-wildfly-adapter-dist-$KEYCLOAK_VERSION.zip /opt/jboss
COPY keycloak-saml-wildfly-adapter-dist-$KEYCLOAK_VERSION.zip /opt/jboss
ENV MAVEN_VERSION=3.3.9
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 \
&& unzip keycloak-$KEYCLOAK_VERSION.zip \
&& git clone https://github.com/keycloak/keycloak-quickstarts.git
RUN cd /opt/jboss/keycloak-$KEYCLOAK_VERSION \
&& unzip -o ../keycloak-wildfly-adapter-dist-$KEYCLOAK_VERSION.zip \
&& unzip -o ../keycloak-saml-wildfly-adapter-dist-$KEYCLOAK_VERSION.zip
ENV JAVA_HOME=/usr/lib/jvm/java
ENV JBOSS_HOME=/opt/jboss/keycloak-$KEYCLOAK_VERSION
ENV LAUNCH_JBOSS_IN_BACKGROUND=1
RUN cp /opt/jboss/keycloak-quickstarts/service-jee-jaxrs/config/keycloak-example.json \
/opt/jboss/keycloak-quickstarts/service-jee-jaxrs/config/keycloak.json
RUN cp /opt/jboss/keycloak-quickstarts/app-profile-jee-html5/config/keycloak-example.json \
/opt/jboss/keycloak-quickstarts/app-profile-jee-html5/config/keycloak.json
RUN cp /opt/jboss/keycloak-quickstarts/app-profile-jee-jsp/config/keycloak-example.json \
/opt/jboss/keycloak-quickstarts/app-profile-jee-jsp/config/keycloak.json
RUN cp /opt/jboss/keycloak-quickstarts/app-profile-saml-jee-jsp/config/keycloak-saml-example.xml \
/opt/jboss/keycloak-quickstarts/app-profile-saml-jee-jsp/config/keycloak-saml.xml
RUN cp /opt/jboss/keycloak-quickstarts/app-jee-html5/config/keycloak-example.json \
/opt/jboss/keycloak-quickstarts/app-jee-html5/config/keycloak.json
RUN cp /opt/jboss/keycloak-quickstarts/app-jee-jsp/config/keycloak-example.json \
/opt/jboss/keycloak-quickstarts/app-jee-jsp/config/keycloak.json
RUN cp /opt/jboss/keycloak-quickstarts/app-angular2/config/keycloak-example.json \
/opt/jboss/keycloak-quickstarts/app-angular2/config/keycloak.json
RUN cp /opt/jboss/keycloak-quickstarts/app-authz-jee-servlet/config/keycloak-example.json \
/opt/jboss/keycloak-quickstarts/app-authz-jee-servlet/config/keycloak.json
RUN cp /opt/jboss/keycloak-quickstarts/app-authz-jee-vanilla/config/keycloak-example.json \
/opt/jboss/keycloak-quickstarts/app-authz-jee-vanilla/config/keycloak.json
RUN mvn package -f /opt/jboss/keycloak-quickstarts/pom.xml \
&& rm -rf ~/.m2/repository
RUN cd /opt/jboss/keycloak-quickstarts \
&& find -name *.war | grep -v ear | xargs -I {} cp {} /opt/jboss/keycloak-$KEYCLOAK_VERSION/standalone/deployments/ \
&& cp quickstart-realm.json /opt/jboss/keycloak-$KEYCLOAK_VERSION
# RUN /opt/jboss/keycloak-$KEYCLOAK_VERSION/bin/jboss-cli.sh -c --file=/opt/jboss/keycloak-$KEYCLOAK_VERSION/bin/adapter-install.cli
# RUN /opt/jboss/keycloak-$KEYCLOAK_VERSION/bin/jboss-cli.sh -c --file=/opt/jboss/keycloak-$KEYCLOAK_VERSION/bin/adapter-install-saml.cli
ADD docker-entrypoint.sh /opt/jboss/
EXPOSE 8080
ENTRYPOINT ["/opt/jboss/docker-entrypoint.sh"]
CMD ["-b","0.0.0.0","-Dkeycloak.import=/opt/jboss/keycloak-$KEYCLOAK_VERSION/quickstart-realm.json"]
CMD ["/bin/sh","-c","/bin/bash"]
cpがあるのはそのままでは mvn 実行時にエラーになるからです。みなさん困ってないのかな。adapterのインストールはコメントにしていますが、サーバ実行中に別Windowでexecし、またユーザも追加しました。再度standalone.shで立ち上げてみます(行間詰めています)。
[root@2d4dd25cb4f7 keycloak-6.0.1]# bin/standalone.sh -b 0.0.0.0 -Dkeycloak.import=/opt/jboss/keycloak-6.0.1/quickstart-realm.json
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /opt/jboss/keycloak-6.0.1
JAVA: 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
=========================================================================
02:16:06,727 INFO [org.jboss.modules] (main) JBoss Modules version 1.9.0.Final
02:16:10,699 INFO [org.jboss.msc] (main) JBoss MSC version 1.4.5.Final
02:16:10,778 INFO [org.jboss.threads] (main) JBoss Threads version 2.3.3.Final
02:16:11,757 INFO [org.jboss.as] (MSC service thread 1-1) WFLYSRV0049: Keycloak 6.0.1 (WildFly Core 8.0.0.Final) starting
(省略)
02:18:00,732 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server
02:18:00,745 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
02:18:00,749 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
02:18:00,751 ERROR [org.jboss.as] (Controller Boot Thread) WFLYSRV0026: Keycloak 6.0.1 (WildFly Core 8.0.0.Final) started (with errors) in 118430ms - Started 1330 of 1606 services (2 services failed or missing dependencies, 624 services are lazy, passive or on-demand)
2つサービスの起動でエラーになっています。ま、良しとしよう。
試してみる
Getting Started Guideを見ながら、vanillaのclientを登録し、standalone/configuration/standalone.xmlを更新、keycloakサーバを再起動する。 http://localhost:8080/vanilla
にアクセス、ログインボタンを押し、ログインする。
LOGOUT
You are logged in!
Principal f9344940-0328-4758-8b41-482293310c14
と表示されました(^^)/