diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 62a48a6..5a47ad1 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,7 +8,113 @@ updates: github-actions: patterns: ["*"] + - package-ecosystem: npm + directories: + - /frameworks/reactjs/oidc-client-ts + - /frameworks/reactjs/oidc-spa + - /frameworks/reactjs/oidc-spa-starter + - /frameworks/vue + - /frameworks/nuxt/keycloak-js + - /frameworks/nuxt/oidc-client-ts + - /frameworks/sveltekit + - /frameworks/angular + - /frameworks/spring-boot-keycloak/angularclient + - /tools/e2e-smoke + schedule: + interval: monthly + cooldown: + default-days: 7 + groups: + minor-and-patch: + update-types: [minor, patch] + ignore: + - dependency-name: typescript + update-types: [version-update:semver-major] + - dependency-name: "@types/node" + update-types: [version-update:semver-major] + + - package-ecosystem: npm + directory: /frameworks/nextjs + schedule: + interval: monthly + cooldown: + default-days: 7 + groups: + minor-and-patch: + update-types: [minor, patch] + ignore: + - dependency-name: typescript + update-types: [version-update:semver-major] + - dependency-name: "@types/node" + update-types: [version-update:semver-major] + - dependency-name: eslint + update-types: [version-update:semver-major] + + - package-ecosystem: npm + directory: /frameworks/remix + schedule: + interval: monthly + cooldown: + default-days: 7 + groups: + minor-and-patch: + update-types: [minor, patch] + ignore: + - dependency-name: typescript + update-types: [version-update:semver-major] + - dependency-name: "@types/node" + update-types: [version-update:semver-major] + - dependency-name: react-router + update-types: [version-update:semver-major] + - dependency-name: "@react-router/*" + update-types: [version-update:semver-major] + + - package-ecosystem: npm + directory: /multitenant + schedule: + interval: monthly + cooldown: + default-days: 7 + groups: + minor-and-patch: + update-types: [minor, patch] + ignore: + - dependency-name: typescript + update-types: [version-update:semver-major] + - dependency-name: "@types/node" + update-types: [version-update:semver-major] + - dependency-name: eslint + update-types: [version-update:semver-major] + - dependency-name: "@eslint/js" + update-types: [version-update:semver-major] + - dependency-name: vitest + update-types: [version-update:semver-major] + + - package-ecosystem: pip + directory: /frameworks/django + schedule: + interval: monthly + groups: + minor-and-patch: + update-types: [minor, patch] + ignore: + - dependency-name: django + update-types: [version-update:semver-major] + + - package-ecosystem: gradle + directories: + - /frameworks/spring-boot-keycloak + - /saml2/idp-initiated + schedule: + interval: monthly + groups: + minor-and-patch: + update-types: [minor, patch] + - package-ecosystem: docker-compose - directory: /keycloak + directories: + - /keycloak + - /frameworks/spring-boot-keycloak + - /saml2/idp-initiated schedule: interval: monthly diff --git a/README.md b/README.md index 9d5a555..09971c2 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,25 @@ This is a repo for code examples showing how to integrate Keycloak with various [Demo Apps](./multitenant/README.md) to be used as a starting point for a multi-tenant setup with [Phase Two Organizations](https://phasetwo.io/docs/organizations/). Uses `nx` to manage the apps and `oidc-spa`. Tutorial: [Implement Multi-Tenancy Applications with Keycloak Organizations](https://phasetwo.io/blog/multi-tenancy-with-keycloak-organizations). +## Build status + +| Example | Status | +| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| React (oidc-client-ts) | [![React (oidc-client-ts)](https://github.com/p2-inc/examples/actions/workflows/react-oidc.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/react-oidc.yml) | +| React (oidc-spa) | [![React (oidc-spa)](https://github.com/p2-inc/examples/actions/workflows/react-oidcspa.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/react-oidcspa.yml) | +| React (oidc-spa tutorial starter) | [![React (oidc-spa tutorial starter)](https://github.com/p2-inc/examples/actions/workflows/react-oidcspa-starter.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/react-oidcspa-starter.yml) | +| Next.js (NextAuth.js) | [![Next.js (NextAuth.js)](https://github.com/p2-inc/examples/actions/workflows/nextjs.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/nextjs.yml) | +| React Router v7, formerly Remix (remix-auth) | [![React Router v7, formerly Remix (remix-auth)](https://github.com/p2-inc/examples/actions/workflows/remix.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/remix.yml) | +| Vue (oidc-client-ts) | [![Vue (oidc-client-ts)](https://github.com/p2-inc/examples/actions/workflows/vue.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/vue.yml) | +| Nuxt (keycloak-js) | [![Nuxt (keycloak-js)](https://github.com/p2-inc/examples/actions/workflows/nuxt-keycloakjs.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/nuxt-keycloakjs.yml) | +| Nuxt (oidc-client-ts) | [![Nuxt (oidc-client-ts)](https://github.com/p2-inc/examples/actions/workflows/nuxt-oidc.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/nuxt-oidc.yml) | +| SvelteKit (Auth.js) | [![SvelteKit (Auth.js)](https://github.com/p2-inc/examples/actions/workflows/sveltekit.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/sveltekit.yml) | +| Angular (angular-oauth2-oidc) | [![Angular (angular-oauth2-oidc)](https://github.com/p2-inc/examples/actions/workflows/angular.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/angular.yml) | +| Django (mozilla-django-oidc) | [![Django (mozilla-django-oidc)](https://github.com/p2-inc/examples/actions/workflows/django.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/django.yml) | +| Spring Boot + Angular | [![Spring Boot + Angular](https://github.com/p2-inc/examples/actions/workflows/spring-boot-keycloak.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/spring-boot-keycloak.yml) | +| SAML IdP-initiated SSO (Spring Boot) | [![SAML IdP-initiated SSO (Spring Boot)](https://github.com/p2-inc/examples/actions/workflows/saml2-idp-initiated.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/saml2-idp-initiated.yml) | +| Multi-tenant (Nx) | [![Multi-tenant (Nx)](https://github.com/p2-inc/examples/actions/workflows/multitenant.yml/badge.svg)](https://github.com/p2-inc/examples/actions/workflows/multitenant.yml) | + ## Running an example Each example's README has its exact steps. They all need: diff --git a/keycloak/README.md b/keycloak/README.md index 485a2f1..34c0fd9 100644 --- a/keycloak/README.md +++ b/keycloak/README.md @@ -41,7 +41,7 @@ Every client allows its local redirect URIs, `+` as web origin (CORS for the red Confidential clients use the secret `-local-dev-secret` (for example `nextjs-local-dev-secret`). **These secrets, and the demo passwords, exist only for this local container.** Never reuse them anywhere else. -The Spring Boot and SAML examples keep their own Keycloak setup (`frameworks/spring-boot-keycloak/docker-compose.yml` on port 8888, `saml2/idp-initiated`), because their tutorials use different realms. +The Spring Boot and SAML examples keep their own Keycloak setup, because their tutorials use different realms. [`frameworks/spring-boot-keycloak/docker-compose.yml`](../frameworks/spring-boot-keycloak/docker-compose.yml) runs on port 8888, next to this one. [`saml2/idp-initiated/docker-compose.yml`](../saml2/idp-initiated/docker-compose.yml) runs on port 8080 without the `/auth` path, like the SAML tutorial, so stop this Keycloak before you start that one. ## Organizations (for `/multitenant`)