.github/workflows/release.yml | ●●●●● patch | view | raw | blame | history | |
.github/workflows/test.yml | ●●●●● patch | view | raw | blame | history | |
.github/workflows/update-deps.yml | ●●●●● patch | view | raw | blame | history | |
README.md | ●●●●● patch | view | raw | blame | history | |
integrationTest/suite.sh | ●●●●● patch | view | raw | blame | history | |
pom.xml | ●●●●● patch | view | raw | blame | history |
.github/workflows/release.yml
@@ -12,12 +12,14 @@ steps: - id: checkout name: Checkout code uses: actions/checkout@v2 uses: actions/checkout@v3 - name: Install Java and Maven uses: actions/setup-java@v1 - id: java name: Install Java and Maven uses: actions/setup-java@v2 with: java-version: 8 distribution: zulu java-version: 11 - id: vars name: Get project variables @@ -36,10 +38,11 @@ mvn -B test package - name: Upload artifact uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v3 with: name: jar path: target/${{ steps.vars.outputs.artifactId }}-${{ steps.vars.outputs.projectVersion }}.jar if-no-files-found: error outputs: artifact_id: ${{ steps.vars.outputs.artifactId }} @@ -51,16 +54,6 @@ name: Test runs-on: ubuntu-latest needs: build services: keycloak: image: quay.io/keycloak/keycloak:${{ needs.build.outputs.keycloak_version }} env: KEYCLOAK_USER: admin KEYCLOAK_PASSWORD: admin ports: - 8080:8080 volumes: - '${{ github.workspace }}:/workspace' steps: - id: checkout name: Checkout code @@ -68,37 +61,42 @@ - id: download_artifact name: Download artifact uses: actions/download-artifact@v1 uses: actions/download-artifact@v3 with: name: jar - id: create_container name: Create Keycloak container run: | docker run -i -t -d -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -p 8080:8080 --name keycloak "quay.io/keycloak/keycloak:${{ needs.build.outputs.keycloak_version }}" start-dev - id: deploy name: Deploy artifact run: | CONTAINER="${{ job.services.keycloak.id }}" CONTAINER="keycloak" NAME="${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar" FILE="/opt/jboss/keycloak/standalone/deployments/${NAME}" docker cp "jar/${NAME}" "${CONTAINER}:/tmp/" docker exec -i "${CONTAINER}" /bin/bash <<EOF cp "/tmp/${NAME}" "${FILE}" FILE="/opt/keycloak/providers/${NAME}" docker cp "${NAME}" "${CONTAINER}:${FILE}" docker restart "${CONTAINER}" for i in {1..60}; do echo -n . [ -f "${FILE}.deployed" ] && echo && echo "Deployment succeeded!" && exit 0 [ -f "${FILE}.failed" ] && echo && echo "Deployment failed!" && exit 1 if curl --silent --max-time 1 -o /dev/null http://localhost:8080; then echo && echo "Deployment succeeded!" && exit 0 else sleep 1 echo -n "." fi done echo && echo "Deployment timeout!" && exit 1 EOF - id: configure_keycloak name: Configure Keycloak run: | CONTAINER="${{ job.services.keycloak.id }}" CONTAINER="keycloak" docker exec -i "${CONTAINER}" /bin/bash <<EOF /opt/jboss/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin --password admin /opt/jboss/keycloak/bin/kcadm.sh create clients -r master -s clientId=test -s protocol=cas -s enabled=true -s publicClient=true \ /opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin --password admin /opt/keycloak/bin/kcadm.sh create clients -r master -s clientId=test -s protocol=cas -s enabled=true -s publicClient=true \ -s 'redirectUris=["http://localhost/*"]' -s baseUrl=http://localhost -s adminUrl=http://localhost /opt/jboss/keycloak/bin/kcadm.sh get serverinfo -r master --fields "providers(login-protocol(providers(cas)))" | grep cas /opt/keycloak/bin/kcadm.sh get serverinfo -r master --fields "providers(login-protocol(providers(cas)))" | grep cas EOF - id: run_tests @@ -113,7 +111,7 @@ steps: - id: download_artifact name: Download artifact uses: actions/download-artifact@v1 uses: actions/download-artifact@v3 with: name: jar @@ -135,6 +133,6 @@ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: jar/${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar asset_path: ${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar asset_name: ${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar asset_content_type: application/java-archive .github/workflows/test.yml
@@ -10,12 +10,14 @@ steps: - id: checkout name: Checkout code uses: actions/checkout@v2 uses: actions/checkout@v3 - name: Install Java and Maven uses: actions/setup-java@v1 - id: java name: Install Java and Maven uses: actions/setup-java@v2 with: java-version: 8 distribution: zulu java-version: 11 - id: vars name: Get project variables @@ -34,10 +36,11 @@ mvn -B test package - name: Upload artifact uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v3 with: name: jar path: target/${{ steps.vars.outputs.artifactId }}-${{ steps.vars.outputs.projectVersion }}.jar if-no-files-found: error outputs: artifact_id: ${{ steps.vars.outputs.artifactId }} @@ -49,16 +52,6 @@ name: Test runs-on: ubuntu-latest needs: build services: keycloak: image: quay.io/keycloak/keycloak:${{ needs.build.outputs.keycloak_version }} env: KEYCLOAK_USER: admin KEYCLOAK_PASSWORD: admin ports: - 8080:8080 volumes: - '${{ github.workspace }}:/workspace' steps: - id: checkout name: Checkout code @@ -66,37 +59,42 @@ - id: download_artifact name: Download artifact uses: actions/download-artifact@v1 uses: actions/download-artifact@v3 with: name: jar - id: create_container name: Create Keycloak container run: | docker run -i -t -d -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -p 8080:8080 --name keycloak "quay.io/keycloak/keycloak:${{ needs.build.outputs.keycloak_version }}" start-dev - id: deploy name: Deploy artifact run: | CONTAINER="${{ job.services.keycloak.id }}" CONTAINER="keycloak" NAME="${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar" FILE="/opt/jboss/keycloak/standalone/deployments/${NAME}" docker cp "jar/${NAME}" "${CONTAINER}:/tmp/" docker exec -i "${CONTAINER}" /bin/bash <<EOF cp "/tmp/${NAME}" "${FILE}" FILE="/opt/keycloak/providers/${NAME}" docker cp "${NAME}" "${CONTAINER}:${FILE}" docker restart "${CONTAINER}" for i in {1..60}; do echo -n . [ -f "${FILE}.deployed" ] && echo && echo "Deployment succeeded!" && exit 0 [ -f "${FILE}.failed" ] && echo && echo "Deployment failed!" && exit 1 if curl --silent --max-time 1 -o /dev/null http://localhost:8080; then echo && echo "Deployment succeeded!" && exit 0 else sleep 1 echo -n "." fi done echo && echo "Deployment timeout!" && exit 1 EOF - id: configure_keycloak name: Configure Keycloak run: | CONTAINER="${{ job.services.keycloak.id }}" CONTAINER="keycloak" docker exec -i "${CONTAINER}" /bin/bash <<EOF /opt/jboss/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin --password admin /opt/jboss/keycloak/bin/kcadm.sh create clients -r master -s clientId=test -s protocol=cas -s enabled=true -s publicClient=true \ /opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin --password admin /opt/keycloak/bin/kcadm.sh create clients -r master -s clientId=test -s protocol=cas -s enabled=true -s publicClient=true \ -s 'redirectUris=["http://localhost/*"]' -s baseUrl=http://localhost -s adminUrl=http://localhost /opt/jboss/keycloak/bin/kcadm.sh get serverinfo -r master --fields "providers(login-protocol(providers(cas)))" | grep cas /opt/keycloak/bin/kcadm.sh get serverinfo -r master --fields "providers(login-protocol(providers(cas)))" | grep cas EOF - id: run_tests .github/workflows/update-deps.yml
@@ -12,13 +12,14 @@ steps: - id: checkout name: Checkout code uses: actions/checkout@v2 uses: actions/checkout@v3 - id: java name: Install Java and Maven uses: actions/setup-java@v1 uses: actions/setup-java@v2 with: java-version: 8 distribution: zulu java-version: 11 - id: update_keycloak name: Update Keycloak @@ -87,7 +88,7 @@ - id: create_pull_request_default_token name: Create pull request if: steps.check_branch.outputs.commit == '' uses: actions/github-script@0.9.0 uses: actions/github-script@v6 with: github-token: ${{ env.GH_TOKEN }} script: | README.md
@@ -30,10 +30,13 @@ ## Installation Installation of a compatible plugin version is simple and can be done without a Keycloak server restart. Quarkus is the default distribution method of Keycloak 17.0.0 and newer. For legacy installations using WildFly, please refer to the [old README](https://github.com/jacekkow/keycloak-protocol-cas/blob/16.1.1/README.md). 1. Download the latest release compatible with your Keycloak version from the [releases page](https://github.com/jacekkow/keycloak-protocol-cas/releases). 2. Copy the JAR file into the `standalone/deployments` directory in your Keycloak server's root. 2. Put the downloaded JAR file into the `providers/` directory inside Keycloak installation folder. 3. Stop the Keycloak server. 4. (Re-)build the installation using `kc.sh build` command. 5. Start the Keycloak: `kc.sh start` Remember to update plugin artifact with each Keycloak server upgrade! @@ -43,7 +46,7 @@ As there is no client ID indication in protocol, the client will be identified by the redirect URIs configured in Keycloak. Enter `https://your.keycloak.host/auth/realms/master/protocol/cas` as the CAS URL into your SP. Enter `https://your.keycloak.host/realms/master/protocol/cas` as the CAS URL into your SP. This assumes that you use the default `master` realm - if not, modify the URL accordingly. Note that some client implementations require you to enter login and validate URLs, not CAS URL! integrationTest/suite.sh
@@ -1,7 +1,7 @@ #!/bin/bash set -e keycloak_cas_url='http://localhost:8080/auth/realms/master/protocol/cas' keycloak_cas_url='http://localhost:8080/realms/master/protocol/cas' action_pattern='action="([^"]+)"' ticket_pattern='Location: .*\?ticket=(ST-[-A-Za-z0-9_.=]+)' pom.xml
@@ -22,13 +22,13 @@ <groupId>org.keycloak</groupId> <artifactId>keycloak-protocol-cas</artifactId> <version>16.1.1</version> <version>17.0.0</version> <name>Keycloak CAS Protocol</name> <description /> <properties> <keycloak.version>${project.version}</keycloak.version> <jboss.logging.version>3.4.1.Final</jboss.logging.version> <jboss.logging.version>3.4.3.Final</jboss.logging.version> <jboss.logging.tools.version>2.2.1.Final</jboss.logging.tools.version> <junit.version>4.13.2</junit.version>