diff --git a/apps/docs/components/framework_selector.tsx b/apps/docs/components/framework_selector.tsx index f81c8bdb4..fca729894 100644 --- a/apps/docs/components/framework_selector.tsx +++ b/apps/docs/components/framework_selector.tsx @@ -4,8 +4,8 @@ import { useSearchParams } from 'next/navigation'; import { Tabs } from 'fumadocs-ui/components/tabs'; import { ReactNode, Suspense, useMemo } from 'react'; -const FRAMEWORKS = ['angular', 'flutter', 'go', 'nextjs', 'react', 'symfony', 'vue']; -const DISPLAY_NAMES = ['Angular', 'Flutter', 'Go', 'Next.js', 'React', 'Symfony', 'Vue.js']; +const FRAMEWORKS = ['angular', 'astro', 'django', 'expressjs', 'fastapi', 'fastify', 'flask', 'flutter', 'go', 'hono', 'laravel', 'nestjs', 'nextjs', 'nuxt', 'qwik', 'react', 'solidstart', 'spring', 'symfony', 'svelte', 'vue']; +const DISPLAY_NAMES = ['Angular', 'Astro', 'Django', 'Express.js', 'FastAPI', 'Fastify', 'Flask', 'Flutter', 'Go', 'Hono', 'Laravel', 'NestJS', 'Next.js', 'Nuxt', 'Qwik', 'React', 'SolidStart', 'Spring', 'Symfony', 'Svelte', 'Vue.js']; function FrameworkSelectorInner({ children }: { children: ReactNode }) { const searchParams = useSearchParams(); @@ -43,4 +43,4 @@ export function FrameworkSelector(props: { children: ReactNode }) { ); -} \ No newline at end of file +} diff --git a/apps/docs/content/guides/start/_app_values.mdx b/apps/docs/content/guides/start/_app_values.mdx index 588219e5b..5024fb4bd 100644 --- a/apps/docs/content/guides/start/_app_values.mdx +++ b/apps/docs/content/guides/start/_app_values.mdx @@ -3,7 +3,7 @@ import ProjectClientIdSecretImg from '@pub/img/guides/quickstart/project_client_ import ProjectUrlsImg from '@pub/img/guides/quickstart/project_urls.png' import ProjectProjectIdImg from '@pub/img/guides/quickstart/project_project_id.png' -export default function AppValue({ valueCount, clientSecret, projectID }) { +export default function AppValue({ valueCount, clientSecret }) { return (

@@ -29,11 +29,6 @@ export default function AppValue({ valueCount, clientSecret, projectID }) { Get URLs - {!!projectID && (

  • - Project ID Your currently in the application configuration which is a sub resource of the Project. Navigate to the Project with the back arrow and copy the Project ID. - - Get Project ID -
  • )}
    diff --git a/apps/docs/content/guides/start/quickstart.mdx b/apps/docs/content/guides/start/quickstart.mdx index 440490dba..0b291180e 100644 --- a/apps/docs/content/guides/start/quickstart.mdx +++ b/apps/docs/content/guides/start/quickstart.mdx @@ -10,7 +10,8 @@ import { FrameworkSelector } from '@/components/framework_selector'; import AppConfig from './_app_config.mdx'; import AppValues from './_app_values.mdx'; -In this guide, you’ll set up a Zitadel account and authenticate your first example application. +In this guide, you’ll set up a Zitadel account and configure it to work with our pre-built example applications. +You can simply clone the repository, follow the console setup, and have a working authentication flow in minutes. ## Get Started with ZITADEL Cloud @@ -73,7 +74,43 @@ ZITADEL automatically configures the best security settings for your selected fr + postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,28 +125,76 @@ ZITADEL automatically configures the best security settings for your selected fr postLogoutRedirectUrl="http://localhost:8089"> + + + + + + + + + + + + + + + + + + + + + redirectUrl="http://localhost:3000/auth/callback" + postLogoutRedirectUrl="http://localhost:3000"> + + + + + + + + + redirectUrl="http://localhost:3000/auth/callback" + postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> + + + + + postLogoutRedirectUrl="http://localhost:3000"> @@ -120,25 +205,67 @@ ZITADEL automatically configures the best security settings for your selected fr - + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + - + + + + + + + - + + + + + + + - + + + + - + @@ -159,32 +286,85 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi - [Node.js](https://nodejs.org/) - - Code Editor: [VS Code](https://code.visualstudio.com/) or similar + - [npm](https://www.npmjs.com/) + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) + + + - [Python](https://www.python.org/) + - [Poetry](https://python-poetry.org/) + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) + + + - [Python](https://www.python.org/) + - [Poetry](https://python-poetry.org/) + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) + + + - [Python](https://www.python.org/) + - [Poetry](https://python-poetry.org/) - [Flutter](https://docs.flutter.dev/install) - - Code Editor: [VS Code](https://code.visualstudio.com/) or similar - [Go](https://go.dev/) - - Code Editor: [VS Code](https://code.visualstudio.com/) or similar + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) + + + - [PHP](https://www.php.net/) + - [Composer](https://getcomposer.org/) + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) - [Node.js](https://nodejs.org/) - - Code Editor: [VS Code](https://code.visualstudio.com/) or similar + - [npm](https://www.npmjs.com/) + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) - [Node.js](https://nodejs.org/) - - Code Editor: [VS Code](https://code.visualstudio.com/) or similar + - [npm](https://www.npmjs.com/) + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) + + + - [Java Development Kit (JDK)](https://www.java.com/en/) + - [Maven](https://maven.apache.org/) - [PHP](https://www.php.net/) - [Composer](https://getcomposer.org/) - - Code Editor: [VS Code](https://code.visualstudio.com/) or similar + + + - [Node.js](https://nodejs.org/) + - [npm](https://www.npmjs.com/) - [Node.js](https://nodejs.org/) - - Code Editor: [VS Code](https://code.visualstudio.com/) or similar + - [npm](https://www.npmjs.com/) @@ -197,6 +377,42 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi cd example-auth-angular ``` + + ```bash + git clone https://github.com/zitadel/example-auth-astro.git + cd example-auth-astro + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-django.git + cd example-auth-django + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-expressjs.git + cd example-auth-expressjs + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-fastapi.git + cd example-auth-fastapi + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-fastify.git + cd example-auth-fastify + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-flask.git + cd example-auth-flask + ``` + ```bash git clone https://github.com/zitadel/zitadel_flutter.git @@ -206,30 +422,78 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi ```bash git clone https://github.com/zitadel/zitadel-go.git - cd zitadel_go + cd zitadel-go + ``` + + + ```bash + git clone https://github.com/zitadel/zitadel-auth-hono.git + cd zitadel-auth-hono + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-laravel.git + cd example-auth-laravel + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-nestjs.git + cd example-auth-nestjs ``` ```bash - git clone git@github.com:zitadel/example-auth-nextjs.git + git clone https://github.com/zitadel/example-auth-nextjs.git cd example-auth-nextjs ``` + + ```bash + git clone https://github.com/zitadel/example-auth-nuxtjs.git + cd example-auth-nuxtjs + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-qwik.git + cd example-auth-qwik + ``` + ```bash git clone https://github.com/zitadel/example-auth-react.git cd example-auth-react ``` + + ```bash + git clone https://github.com/zitadel/example-auth-solidstart.git + cd example-auth-solidstart + ``` + + + ```bash + git clone https://github.com/zitadel/example-auth-spring.git + cd example-auth-spring + ``` + ```bash git clone https://github.com/zitadel/example-auth-symfony.git cd example-auth-symfony ``` + + ```bash + git clone https://github.com/zitadel/example-auth-sveltekit.git + cd example-auth-sveltekit + ``` + ```bash - git clone git@github.com:zitadel/example-auth-vuejs.git + git clone https://github.com/zitadel/example-auth-vuejs.git cd example-auth-vuejs ``` @@ -240,7 +504,7 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi - 1. Copy+paste the .env.example to .env.local + 1. Copy+paste the .env.example to .env 2. Update the ZITADEL_CLIENT_ID and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. ```bash @@ -252,6 +516,110 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi NG_APP_ZITADEL_POST_LOGIN_URL="/profile" ``` + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + NODE_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/api/auth/callback/zitadel" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/api/auth/logout/callback" + NEXTAUTH_URL="http://localhost:3000" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + PY_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + NODE_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + PY_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + NODE_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + PY_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + No action required for this step. The issuer and client Id will be passed directly when running the app (next step) @@ -260,8 +628,64 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi No action required for this step. The issuer and client Id will be passed directly when running the app (next step) + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + NODE_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + 3. Generate app key, this will update the APP_KEY variable in the .env file + ```bash + php artisan key:generate + ``` + + ```bash + APP_KEY="your-app-key" + APP_ENV=local + APP_DEBUG=true + SERVER_URL="http://localhost:3000" + SERVER_PORT=3000 + DB_CONNECTION=sqlite + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + + + 1. Copy+paste the .env.example to .env.local + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + NODE_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_SALT="your-very-secret-and-strong-session-salt" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + - 1. Copy+past the .env.example to .env.local + 1. Copy+paste the .env.example to .env 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. ```bash @@ -279,6 +703,40 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi ``` + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + NODE_ENV=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/api/auth/callback/zitadel" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000" + NEXTAUTH_URL="http://localhost:3000" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + NODE_ENV=development + VITE_PORT=3000 + VITE_SESSION_SECRET="your-very-secret-and-strong-session-key" + VITE_SESSION_DURATION=3600 + VITE_ZITADEL_DOMAIN="https://your-zitadel-domain" + VITE_ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + VITE_ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + VITE_ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel" + VITE_ZITADEL_POST_LOGOUT_URL="http://localhost:3000/api/auth/logout/callback" + ``` + 1. Copy+paste the .env.example to .env 2. Update the ZITADEL_CLIENT_ID and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. @@ -293,18 +751,69 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi VITE_ZITADEL_POST_LOGOUT_URL="http://localhost:3000" ``` - - + 1. Copy+paste the .env.example to .env - 2. Update the ZITADEL_CLIENT_ID and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. ```bash + NODE_ENV=development PORT=3000 - NG_APP_ZITADEL_DOMAIN="https://your-zitadel-domain" - NG_APP_ZITADEL_CLIENT_ID="your-client-id" - NG_APP_ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback" - NG_APP_ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" - NG_APP_ZITADEL_POST_LOGIN_URL="/profile" + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/api/auth/callback/zitadel" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/api/auth/logout/callback" + NEXTAUTH_URL="http://localhost:3000" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + SPRING_PROFILES_ACTIVE=development + PORT=3000 + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + APP_SECRET="your-app-secret-key" + SERVER_URL="http://localhost:3000" + SERVER_PORT=3000 + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + ``` + + + 1. Copy+paste the .env.example to .env + 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5. + + ```bash + SESSION_SECRET="your-very-secret-and-strong-session-key" + SESSION_DURATION=3600 + # Example: https://my-org-a1b2c3.zitadel.cloud + ZITADEL_DOMAIN="https://your-zitadel-domain" + ZITADEL_CLIENT_ID="your-zitadel-application-client-id" + ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret" + ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel" + ZITADEL_POST_LOGIN_URL="/profile" + ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback" + NEXTAUTH_URL="http://localhost:3000" ``` @@ -329,14 +838,67 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi ```bash - npm install - npm run dev + make start ``` - Your app will be live at `http://localhost:4200`. + Your app will be live at `http://localhost:3000`. ![Angular Example App](../../../public/img/guides/quickstart/angular_example_app.png) + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Astro Example App](../../../public/img/guides/quickstart/astro_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Django Example App](../../../public/img/guides/quickstart/django_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Express.js Example App](../../../public/img/guides/quickstart/expressjs_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Fastify Example App](../../../public/img/guides/quickstart/fastify_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![FastAPI Example App](../../../public/img/guides/quickstart/fastapi_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Flask Example App](../../../public/img/guides/quickstart/flask_example_app.png) + Make sure to replace the [zitadel_issuer] and [zitadel_client_id] with your own value before running the command ```bash @@ -357,42 +919,109 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi ![Go Example App](../../../public/img/guides/quickstart/go_example_app.png) + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Hono Example App](../../../public/img/guides/quickstart/hono_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Laravel Example App](../../../public/img/guides/quickstart/laravel_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![NestJS Example App](../../../public/img/guides/quickstart/nestjs_example_app.png) + + ```bash - npm install - - npm run dev + make start ``` Your app will be live at `http://localhost:3000`. ![Next.js Example App](../../../public/img/guides/quickstart/next_example_app.png) + + + ```bash + make start + ``` + Your app will be live at `http://localhost:3000`. + + ![Nuxt Example App](../../../public/img/guides/quickstart/nuxt_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Qwik Example App](../../../public/img/guides/quickstart/qwik_example_app.png) ```bash - npm install - npm run dev + make start ``` Your app will be live at `http://localhost:3000`. ![React Example App](../../../public/img/guides/quickstart/react_example_app.png) - + ```bash - composer install - composer run dev + make start ``` Your app will be live at `http://localhost:3000`. - ![Angular Example App](../../../public/img/guides/quickstart/symfony_example_app.png) + ![SolidStart Example App](../../../public/img/guides/quickstart/solidstart_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Spring Example App](../../../public/img/guides/quickstart/spring_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Symfony Example App](../../../public/img/guides/quickstart/symfony_example_app.png) + + + ```bash + make start + ``` + + Your app will be live at `http://localhost:3000`. + + ![Svelte Example App](../../../public/img/guides/quickstart/sveltekit_example_app.png) ```bash - npm install - npm run dev + make start ``` Your app will be live at `http://localhost:3000`. @@ -409,7 +1038,7 @@ You’ve successfully integrated ZITADEL into an application. 1. **Generate a backup PAT:** Create a [Service User Personal Access Token](/guides/integrate/service-accounts/personal-access-token) with the [`IAM_OWNER`](/guides/manage/console/managers) role to revert any login UI misconfigurations using the API. 2. **Add a second Instance Manager:** Always designate at least one [**second instance manager**](/guides/manage/console/managers). - + ### What’s next? @@ -418,4 +1047,4 @@ You’ve successfully integrated ZITADEL into an application. - [**Customize the UI**](/guides/manage/customize/branding): Make the login page your own with Branding. - [**Explore the API**](/apis/introduction): Check out the ZITADEL API Reference for advanced integrations. -Need help? Join our [Discord community](https://zitadel.com/chat) or explore the full Documentation. Happy coding! \ No newline at end of file +Need help? Join our [Discord community](https://zitadel.com/chat) or explore the full Documentation. Happy coding! diff --git a/apps/docs/content/sdk-examples/astro.mdx b/apps/docs/content/sdk-examples/astro.mdx index c0be2cc9f..a6b988467 100644 --- a/apps/docs/content/sdk-examples/astro.mdx +++ b/apps/docs/content/sdk-examples/astro.mdx @@ -53,7 +53,7 @@ Once you have your [Zitadel application configured](https://zitadel.com/docs/gui PORT=3000 SESSION_DURATION=3600 SESSION_SECRET=your-very-secret-and-strong-session-key - ZITADEL_DOMAIN=https://your-zitadel-instance.zitadel.cloud + ZITADEL_DOMAIN=https://your-zitadel-domain ZITADEL_CLIENT_ID=your_client_id_from_console ZITADEL_CLIENT_SECRET=your-randomly-generated-client-secret ZITADEL_CALLBACK_URL=http://localhost:3000/api/auth/callback/zitadel diff --git a/apps/docs/content/sdk-examples/fastify.mdx b/apps/docs/content/sdk-examples/fastify.mdx index 8b3677a04..437b3045c 100644 --- a/apps/docs/content/sdk-examples/fastify.mdx +++ b/apps/docs/content/sdk-examples/fastify.mdx @@ -38,7 +38,7 @@ Before running this example, you need to create and configure a PKCE application 1. Create a new Web application in your [Zitadel project](https://zitadel.com/docs/guides/manage/console/projects) 2. Configure it to use the PKCE authentication method 3. Set up your redirect URIs (e.g., `http://localhost:3000/auth/callback/zitadel` for development) -4. Configure post-logout redirect URIs (e.g., `http://localhost:3000`) +4. Configure post-logout redirect URIs (e.g., `http://localhost:3000/auth/logout/callback`) 5. Copy your **Client ID** for use in the next steps 6. Optionally enable [refresh tokens](https://zitadel.com/docs/apis/openidoauth/grant-types#refresh-token) in Token Settings for long-lived sessions diff --git a/apps/docs/content/sdk-examples/nuxtjs.mdx b/apps/docs/content/sdk-examples/nuxtjs.mdx index ba44ea3dc..0f098b7da 100644 --- a/apps/docs/content/sdk-examples/nuxtjs.mdx +++ b/apps/docs/content/sdk-examples/nuxtjs.mdx @@ -36,7 +36,7 @@ Before running this example, you need to create and configure a PKCE application 1. Create a new Web application in your [Zitadel project](https://zitadel.com/docs/guides/manage/console/projects) 2. Configure it to use the PKCE authentication method 3. Set up your redirect URIs (e.g., `http://localhost:3000/api/auth/callback/zitadel` for development) -4. Configure post-logout redirect URIs (e.g., `http://localhost:3000/`) +4. Configure post-logout redirect URIs (e.g., `http://localhost:3000`) 5. Copy your **Client ID** for use in the next steps > **Note:** Make sure to enable **Dev Mode** in the ZITADEL Management Console if you're using HTTP URLs during local development. For production, always use HTTPS URLs and disable Dev Mode. @@ -55,7 +55,7 @@ Once you have your Zitadel application configured: ZITADEL_CLIENT_ID=your-client-id ZITADEL_CLIENT_SECRET=your-randomly-generated-client-secret ZITADEL_CALLBACK_URL=http://localhost:3000/api/auth/callback/zitadel - ZITADEL_POST_LOGOUT_URL=http://localhost:3000/ + ZITADEL_POST_LOGOUT_URL=http://localhost:3000 AUTH_ORIGIN=http://localhost:3000 ``` Replace these values with: diff --git a/apps/docs/content/sdk-examples/react.mdx b/apps/docs/content/sdk-examples/react.mdx index d7fad298b..9c743216d 100644 --- a/apps/docs/content/sdk-examples/react.mdx +++ b/apps/docs/content/sdk-examples/react.mdx @@ -38,7 +38,7 @@ Before running this example, you need to create and configure a PKCE application 1. Create a new Web application in your [Zitadel project](https://zitadel.com/docs/guides/manage/console/projects) 2. Configure it to use the PKCE authentication method 3. Set up your redirect URIs (e.g., `http://localhost:3000/auth/callback` for development) -4. Configure post-logout redirect URIs (e.g., `http://localhost:3000/`) +4. Configure post-logout redirect URIs (e.g., `http://localhost:3000`) 5. Copy your **Client ID** for use in the next steps > **Note:** Make sure to enable **Dev Mode** in the [ZITADEL Management Console](https://zitadel.com/docs/guides/manage/console/overview) if you're using HTTP URLs during local development. For production, always use HTTPS URLs and disable Dev Mode. @@ -53,7 +53,7 @@ Once you have your Zitadel application configured: VITE_ZITADEL_DOMAIN=https://your-instance.zitadel.cloud VITE_ZITADEL_CLIENT_ID=your_client_id_from_console VITE_ZITADEL_CALLBACK_URL=http://localhost:3000/auth/callback -VITE_ZITADEL_POST_LOGOUT_URL=http://localhost:3000/ +VITE_ZITADEL_POST_LOGOUT_URL=http://localhost:3000 VITE_POST_LOGIN_URL=/profile VITE_PORT=3000 ``` diff --git a/apps/docs/content/sdk-examples/vue.mdx b/apps/docs/content/sdk-examples/vue.mdx index 297c6342d..3e3ab9307 100644 --- a/apps/docs/content/sdk-examples/vue.mdx +++ b/apps/docs/content/sdk-examples/vue.mdx @@ -38,7 +38,7 @@ Before running this example, you need to create and configure a PKCE application 1. Create a new Web application in your [Zitadel project](https://zitadel.com/docs/guides/manage/console/projects) 2. Configure it to use the PKCE authentication method 3. Set up your redirect URIs (e.g., `http://localhost:3000/auth/callback` for development) -4. Configure post-logout redirect URIs +4. Configure post-logout redirect URIs (e.g., `http://localhost:3000`) 5. Copy your **Client ID** for use in the next steps > **Note:** Make sure to enable **Dev Mode** in the [ZITADEL Management Console](https://zitadel.com/docs/guides/manage/console/overview) if you're using HTTP URLs during local development. For production, always use HTTPS URLs and disable Dev Mode. diff --git a/apps/docs/frameworks.json b/apps/docs/frameworks.json index 7f7d39af1..49ad2e1df 100644 --- a/apps/docs/frameworks.json +++ b/apps/docs/frameworks.json @@ -1,47 +1,4 @@ [ - { - "id": "client-php", - "title": "PHP", - "imgSrcDark": "/docs/img/tech/php.svg", - "docsLink": "/docs/sdk-examples/client-libraries/php", - "client": true - }, - { - "id": "client-java", - "title": "Java", - "imgSrcDark": "/docs/img/tech/java.svg", - "docsLink": "/docs/sdk-examples/client-libraries/java", - "client": true - }, - { - "id": "client-go", - "title": "Go", - "imgSrcDark": "/docs/img/tech/golang.svg", - "docsLink": "/docs/guides/start/quickstart?framework=go", - "client": true, - "sdk": true - }, - { - "id": "client-ruby", - "title": "Ruby", - "imgSrcDark": "/docs/img/tech/ruby.svg", - "docsLink": "/docs/sdk-examples/client-libraries/ruby", - "client": true - }, - { - "id": "client-python", - "title": "Python", - "imgSrcDark": "/docs/img/tech/python.svg", - "docsLink": "/docs/sdk-examples/client-libraries/python", - "client": true - }, - { - "id": "client-node", - "title": "Node.js", - "imgSrcDark": "/docs/img/tech/nodejs.svg", - "docsLink": "/docs/sdk-examples/client-libraries/node", - "client": true - }, { "id": "angular", "title": "Angular", @@ -50,6 +7,43 @@ "imgSrcDark": "/docs/img/tech/angular.svg", "docsLink": "/docs/guides/start/quickstart?framework=angular" }, + { + "id": "astro", + "title": "Astro", + "imgSrcDark": "/docs/img/tech/astro.svg", + "docsLink": "/docs/guides/start/quickstart?framework=astro" + }, + { + "id": "django", + "title": "Django", + "imgSrcDark": "/docs/img/tech/django.svg", + "docsLink": "/docs/guides/start/quickstart?framework=django" + }, + { + "id": "expressjs", + "title": "Express.js", + "imgSrcDark": "/docs/img/tech/expressjs.svg", + "docsLink": "/docs/guides/start/quickstart?framework=expressjs" + }, + { + "id": "fastapi", + "title": "FastAPI", + "imgSrcDark": "/docs/img/tech/fastapi.svg", + "docsLink": "/docs/guides/start/quickstart?framework=fastapi" + }, + { + "id": "fastify", + "title": "Fastify", + "imgSrcDark": "/docs/img/tech/fastify.svg", + "docsLink": "/docs/guides/start/quickstart?framework=fastify" + }, + { + "id": "flask", + "title": "Flask", + "imgSrcDark": "/docs/img/tech/flask.svg", + "imgSrcLight": "/docs/img/tech/flask.svg", + "docsLink": "/docs/guides/start/quickstart?framework=flask" + }, { "id": "flutter", "title": "Flutter", @@ -59,18 +53,25 @@ { "title": "Go", "imgSrcDark": "/docs/img/tech/golang.svg", - "docsLink": "/docs/guides/start/quickstart?framework=go" + "docsLink": "/docs/guides/start/quickstart?framework=go", + "sdk": true }, { - "id": "spring", - "title": "Spring", - "imgSrcDark": "/docs/img/tech/spring.svg", - "docsLink": "/docs/sdk-examples/spring" + "id": "hono", + "title": "Hono", + "imgSrcDark": "/docs/img/tech/hono.svg", + "docsLink": "/docs/guides/start/quickstart?framework=hono" + }, + { + "id": "laravel", + "title": "Laravel", + "imgSrcDark": "/docs/img/tech/laravel.svg", + "docsLink": "/docs/sdk-examples/laravel" }, { "title": "NestJS", "imgSrcDark": "/docs/img/tech/nestjs.svg", - "docsLink": "/docs/sdk-examples/nestjs" + "docsLink": "/docs/guides/start/quickstart?framework=nestjs" }, { "id": "next", @@ -80,23 +81,10 @@ "docsLink": "/docs/guides/start/quickstart?framework=nextjs" }, { - "id": "django", - "title": "Django", - "imgSrcDark": "/docs/img/tech/django.svg", - "docsLink": "/docs/sdk-examples/django" - }, - { - "id": "flask", - "title": "Flask", - "imgSrcDark": "/docs/img/tech/flask.svg", - "imgSrcLight": "/docs/img/tech/flask.svg", - "docsLink": "/docs/sdk-examples/flask" - }, - { - "id": "fastapi", - "title": "FastAPI", - "imgSrcDark": "/docs/img/tech/fastapi.svg", - "docsLink": "/docs/sdk-examples/fastapi" + "id": "nuxt", + "title": "Nuxt.js", + "imgSrcDark": "/docs/img/tech/nuxtjs.svg", + "docsLink": "/docs/guides/start/quickstart?framework=nuxt" }, { "id": "react", @@ -105,125 +93,41 @@ "imgSrcDark": "/docs/img/tech/react.svg", "docsLink": "/docs/guides/start/quickstart?framework=react" }, + { + "id": "qwik", + "title": "Qwik", + "imgSrcDark": "/docs/img/tech/qwik.svg", + "docsLink": "/docs/guides/start/quickstart?framework=qwik" + }, + { + "id": "solidstart", + "title": "SolidStart", + "imgSrcDark": "/docs/img/tech/solidstart.svg", + "docsLink": "/docs/guides/start/quickstart?framework=solidstart" + }, + { + "id": "spring", + "title": "Spring", + "imgSrcDark": "/docs/img/tech/spring.svg", + "docsLink": "/docs/guides/start/quickstart?framework=spring" + }, { "id": "symfony", "title": "Symfony", "imgSrcDark": "/docs/img/tech/symfony.svg", "docsLink": "/docs/guides/start/quickstart?framework=symfony" }, + { + "id": "svelte", + "title": "Svelte", + "imgSrcDark": "/docs/img/tech/sveltekit.svg", + "docsLink": "/docs/guides/start/quickstart?framework=sveltekit" + }, { "id": "vue", "title": "Vue.js", "description": "This preset sets up an OIDC configuration with Authentication Code Flow, secured by PKCE", "imgSrcDark": "/docs/img/tech/vue.svg", "docsLink": "/docs/guides/start/quickstart?framework=vue" - }, - { - "title": "Dart", - "imgSrcDark": "/docs/img/tech/dart.svg", - "docsLink": "https://github.com/smartive/zitadel-dart", - "external": true, - "client": true, - "sdk": true - }, - { - "title": "Elixir", - "imgSrcDark": "/docs/img/tech/elixir.svg", - "docsLink": "https://github.com/maennchen/zitadel_api", - "external": true - }, - { - "title": "NextAuth", - "imgSrcDark": "/docs/img/tech/nextjs.svg", - "imgSrcLight": "/docs/img/tech/nextjslight.svg", - "docsLink": "https://next-auth.js.org/providers/zitadel", - "external": true - }, - { - "title": ".Net", - "imgSrcDark": "/docs/img/tech/dotnet.svg", - "docsLink": "https://github.com/smartive/zitadel-net", - "external": true, - "client": true - }, - { - "title": "Passport.js", - "imgSrcDark": "/docs/img/tech/passportjs.svg", - "docsLink": "https://github.com/buehler/node-passport-zitadel", - "external": true - }, - { - "title": "Rust", - "imgSrcLight": "/docs/img/tech/rust.svg", - "imgSrcDark": "/docs/img/tech/rustlight.svg", - "docsLink": "https://github.com/smartive/zitadel-rust", - "client": true, - "external": true - }, - { - "title": "Pylon", - "imgSrcDark": "/docs/img/tech/pylon.svg", - "docsLink": "https://github.com/getcronit/pylon", - "external": true - }, - { - "title": "Vanilla-JS", - "imgSrcDark": "/docs/img/tech/javascript.svg", - "docsLink": "https://github.com/zitadel/zitadel-vanilla-js", - "external": true - }, - { - "id": "astro", - "title": "Astro", - "imgSrcDark": "/docs/img/tech/astro.svg", - "docsLink": "/docs/sdk-examples/astro" - }, - { - "id": "expressjs", - "title": "Express.js", - "imgSrcDark": "/docs/img/tech/expressjs.svg", - "docsLink": "/docs/sdk-examples/expressjs" - }, - { - "id": "fastify", - "title": "Fastify", - "imgSrcDark": "/docs/img/tech/fastify.svg", - "docsLink": "/docs/sdk-examples/fastify" - }, - { - "id": "hono", - "title": "Hono", - "imgSrcDark": "/docs/img/tech/hono.svg", - "docsLink": "/docs/sdk-examples/hono" - }, - { - "id": "nuxtjs", - "title": "Nuxt.js", - "imgSrcDark": "/docs/img/tech/nuxtjs.svg", - "docsLink": "/docs/sdk-examples/nuxtjs" - }, - { - "id": "qwik", - "title": "Qwik", - "imgSrcDark": "/docs/img/tech/qwik.svg", - "docsLink": "/docs/sdk-examples/qwik" - }, - { - "id": "solidstart", - "title": "SolidStart", - "imgSrcDark": "/docs/img/tech/solidstart.svg", - "docsLink": "/docs/sdk-examples/solidstart" - }, - { - "id": "sveltekit", - "title": "SvelteKit", - "imgSrcDark": "/docs/img/tech/sveltekit.svg", - "docsLink": "/docs/sdk-examples/sveltekit" - }, - { - "id": "laravel", - "title": "Laravel", - "imgSrcDark": "/docs/img/tech/laravel.svg", - "docsLink": "/docs/sdk-examples/laravel" } ] diff --git a/apps/docs/public/img/guides/quickstart/astro_example_app.png b/apps/docs/public/img/guides/quickstart/astro_example_app.png new file mode 100644 index 000000000..3f56812af Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/astro_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/django_example_app.png b/apps/docs/public/img/guides/quickstart/django_example_app.png new file mode 100644 index 000000000..8bce5ca23 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/django_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/expressjs_example_app.png b/apps/docs/public/img/guides/quickstart/expressjs_example_app.png new file mode 100644 index 000000000..17bbfc2f1 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/expressjs_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/fastapi_example_app.png b/apps/docs/public/img/guides/quickstart/fastapi_example_app.png new file mode 100644 index 000000000..314b0d451 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/fastapi_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/fastify_example_app.png b/apps/docs/public/img/guides/quickstart/fastify_example_app.png new file mode 100644 index 000000000..53706f53b Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/fastify_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/flask_example_app.png b/apps/docs/public/img/guides/quickstart/flask_example_app.png new file mode 100644 index 000000000..a18e12b9a Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/flask_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/hono_example_app.png b/apps/docs/public/img/guides/quickstart/hono_example_app.png new file mode 100644 index 000000000..b9d2c76e4 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/hono_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/laravel_example_app.png b/apps/docs/public/img/guides/quickstart/laravel_example_app.png new file mode 100644 index 000000000..5ac8f0d73 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/laravel_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/nestjs_example_app.png b/apps/docs/public/img/guides/quickstart/nestjs_example_app.png new file mode 100644 index 000000000..619f2925c Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/nestjs_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/nuxt_example_app.png b/apps/docs/public/img/guides/quickstart/nuxt_example_app.png new file mode 100644 index 000000000..378a232a7 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/nuxt_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/qwik_example_app.png b/apps/docs/public/img/guides/quickstart/qwik_example_app.png new file mode 100644 index 000000000..f78093b76 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/qwik_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/solidstart_example_app.png b/apps/docs/public/img/guides/quickstart/solidstart_example_app.png new file mode 100644 index 000000000..d5247ad9e Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/solidstart_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/spring_example_app.png b/apps/docs/public/img/guides/quickstart/spring_example_app.png new file mode 100644 index 000000000..ff5ba8971 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/spring_example_app.png differ diff --git a/apps/docs/public/img/guides/quickstart/sveltekit_example_app.png b/apps/docs/public/img/guides/quickstart/sveltekit_example_app.png new file mode 100644 index 000000000..1337cacd7 Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/sveltekit_example_app.png differ diff --git a/console/src/app/utils/framework.ts b/console/src/app/utils/framework.ts index 2f1f1b408..638e24da4 100644 --- a/console/src/app/utils/framework.ts +++ b/console/src/app/utils/framework.ts @@ -13,7 +13,7 @@ export const OIDC_CONFIGURATIONS: OidcAppConfigurations = { .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) .setRedirectUrisList(['http://localhost:3000/auth/callback']) - .setPostLogoutRedirectUrisList(['http://localhost:3000/signedout']), + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), ['react']: new AddOIDCAppRequest() .setAppType(OIDCAppType.OIDC_APP_TYPE_USER_AGENT) .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE) @@ -27,72 +27,72 @@ export const OIDC_CONFIGURATIONS: OidcAppConfigurations = { .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) .setRedirectUrisList(['http://localhost:3000/auth/callback']) - .setPostLogoutRedirectUrisList(['http://localhost:3000/']), + .setPostLogoutRedirectUrisList(['http://localhost:3000']), // web applications ['next']: new AddOIDCAppRequest() .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:3000/callback']) + .setRedirectUrisList(['http://localhost:3000/api/auth/callback/zitadel']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/api/auth/logout/callback']), + ['nestjs']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), + ['nuxt']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/api/auth/callback/zitadel']) .setPostLogoutRedirectUrisList(['http://localhost:3000']), - ['java']: new AddOIDCAppRequest() + ['svelte']: new AddOIDCAppRequest() .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) - .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:18080/webapp/login/oauth2/code/zitadel']) - .setPostLogoutRedirectUrisList(['http://localhost:18080/webapp']), - ['client-java']: new AddOIDCAppRequest() - .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) - .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE) - .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) - .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:18080/webapp/login/oauth2/code/zitadel']) - .setPostLogoutRedirectUrisList(['http://localhost:18080/webapp']), + .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), ['spring']: new AddOIDCAppRequest() .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:8080/login/oauth2/code/zitadel']) - .setPostLogoutRedirectUrisList(['http://localhost:8080']), - ['client-php']: new AddOIDCAppRequest() - .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) - .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) - .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) - .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:8080/callback']) - .setPostLogoutRedirectUrisList(['http://localhost:8080']), - ['client-python']: new AddOIDCAppRequest() - .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) - .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) - .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) - .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:8000/callback']) - .setPostLogoutRedirectUrisList(['http://localhost:8000']), - ['client-node']: new AddOIDCAppRequest() - .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) - .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) - .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) - .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:3000/callback']) - .setPostLogoutRedirectUrisList(['http://localhost:3000']), - ['client-go']: new AddOIDCAppRequest() + .setRedirectUrisList(['http://localhost:3000/auth/callback']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), + ['go']: new AddOIDCAppRequest() .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE) .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) .setRedirectUrisList(['http://localhost:8089/auth/callback']) .setPostLogoutRedirectUrisList(['http://localhost:8089']), - ['client-ruby']: new AddOIDCAppRequest() + ['symfony']: new AddOIDCAppRequest() .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:3000/callback']) - .setPostLogoutRedirectUrisList(['http://localhost:3000']), - ['symfony']: new AddOIDCAppRequest() + .setRedirectUrisList(['http://localhost:3000/auth/callback']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), + ['laravel']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/auth/callback']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), + ['fastapi']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/auth/callback']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), + ['flask']: new AddOIDCAppRequest() .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) @@ -104,8 +104,43 @@ export const OIDC_CONFIGURATIONS: OidcAppConfigurations = { .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE) .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) - .setRedirectUrisList(['http://localhost:8000/oidc/callback/']) - .setPostLogoutRedirectUrisList(['http://localhost:8000/oidc/logout/ ']), + .setRedirectUrisList(['http://localhost:3000/auth/callback']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), + ['astro']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/api/auth/callback/zitadel']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/api/auth/logout/callback']), + ['hono']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), + ['solidstart']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/api/auth/callback/zitadel']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/api/auth/logout/callback']), + ['expressjs']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), + ['fastify']: new AddOIDCAppRequest() + .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB) + .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC) + .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE]) + .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE]) + .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel']) + .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']), // native ['flutter']: new AddOIDCAppRequest() .setAppType(OIDCAppType.OIDC_APP_TYPE_NATIVE)