From f307739d54aff6fbf685ef3e7a37e35d677e77a5 Mon Sep 17 00:00:00 2001 From: Tamal Anwar Chowdhury Date: Wed, 10 Jun 2026 18:47:59 +0600 Subject: [PATCH 1/6] Initial doc update --- .../build/applications/about-applications.mdx | 71 ++++++++++++++++--- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/src/content/docs/build/applications/about-applications.mdx b/src/content/docs/build/applications/about-applications.mdx index 33db848d8..6038811b4 100644 --- a/src/content/docs/build/applications/about-applications.mdx +++ b/src/content/docs/build/applications/about-applications.mdx @@ -4,6 +4,8 @@ title: Applications in Kinde description: Comprehensive overview of Kinde applications including backend, frontend, and machine-to-machine applications with OAuth 2.0 flows and security considerations. sidebar: order: 1 +tableOfContents: + maxHeadingLevel: 3 relatedArticles: - 6c70b7ae-1b1b-43bb-bea1-9b3ec88dd082 - 38d2394f-f064-47a1-89d0-078597b78412 @@ -34,13 +36,22 @@ Applications in Kinde facilitate the receipt of access tokens in your applicatio See [Section 4 of the OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749#section-4) for details on Authorization flows. -We support the following applications and flows. +We support the following applications and flows: -## Back-end / server-side apps +1. **Back-end web**: For server-rendered web applications +2. **Front-end and mobile**: For client-side, javascript-based single page applications (SPAs) +3. **Machine to machine (M2M)**: For trusted back-end services, APIs, and other systems +4. **Device and IoT**: For TVs, native and IoT applications + + ![kinde application types](https://imagedelivery.net/skPPZTHzSlcslvHjesZQcQ/297a6959-eefe-496d-463a-6da163997300/socialsharingimage) + +## Supported app types + +### Back-end web Use for server-rendered web applications. Suitable for confidential applications (such as Regular Web Applications) because the application's authentication methods are included in the exchange and must be kept secure. -### Secured with Authorization Code Flow +**Secured with Authorization Code Flow** This application uses the Authorization Code Flow to exchange an authorization code for a token. @@ -54,17 +65,17 @@ If the Client secret field is empty in your Kinde app it’s because client secr -### SDKs and compatible frameworks +#### SDKs and compatible frameworks Apollo GraphQL, Elixir, ExpressJS, Express GraphQL, Java, .NET, Next.js, NodeJS, Nuxt, PHP, Python, Ruby, TypeScript. [View Kinde SDKs](/developer-tools/about/our-sdks/) -## Front-end / client-side apps +### Front-end and mobile Use for client-side web applications, single page web applications, and mobile applications. Authentication methods are different for these apps because they run in unsecured systems, such as web browsers. -### Secured with Authorization Code Flow and PKCE +#### Secured with Authorization Code Flow and PKCE This application uses the Authorization Code Flow with Proof Key for Code Exchange (PKCE). @@ -76,26 +87,64 @@ Client-side applications, such as single-page web apps, are typically unable to -### SDKs and compatible frameworks +#### SDKs and compatible frameworks JavaScript, React, TypeScript, Android, iOS, React Native, Expo, Flutter, Node/Apollo GraphQL, Node/Express GraphQL. [View Kinde SDKs](/developer-tools/about/our-sdks/) -## Machine to machine (M2M) apps +### Machine to machine (M2M) Use for your backend services that require access to an API. This includes accessing the Kinde management API. Other use cases include CLIs, daemons and IoT devices. You can create as many M2M apps as you require. See [Add a machine to machine application for API access](/developer-tools/kinde-api/connect-to-kinde-api/). -### Secured with Client Credentials +#### Secured with Client Credentials M2M applications are secured through an initial exchange of each application’s Client ID and Client Secret. This identifies each application as authorized for token exchange. Each access token request must include the `Client Credentials` grant type. Typically, a request includes scopes, which define the type of information that can be requested in the exchange. -### Access to Kinde's Management API is managed via scopes +#### Access to Kinde's Management API is managed via scopes When you set up an M2M application that you will use with Kinde's Management API, you need to select the scopes that your application will need to access. For example, you'll select `read`, `create`, `update`, and `delete` actions. -### Add properties to M2M tokens +#### Add properties to M2M tokens If you want, you can [add custom properties to an M2M application](/properties/work-with-properties/manage-properties/) and then [include these properties in M2M tokens](/properties/work-with-properties/properties-in-tokens/). This is helpful if you want to include special information when you pass M2M tokens between systems. + +### Device and IoT + +To be added. + +## Manage applications + +### Add an application + +1. Sign in to your Kinde dashboard, and select **Add application**. +2. Alternatively, go to **Settings > Environment > Applications**. Select **Add application**. +3. Enter a **Name** and select the **Type** of application (e.g., Back-end web). Select **Save**. +4. Select the SDK (e.g., NextJS), select **Save**. +5. Configure the application by selecting **View details** on the application tile, see below for more details. + +### Configure an application + +- [Get application keys](/get-started/connect/getting-app-keys/) to connect your apps +- Set callback URLs using the [relevant SDK](/developer-tools/about/our-sdks/) +- [Set up authentication](/authenticate/authentication-methods/set-up-user-authentication/) +- [Configure tokens](/build/tokens/configure-tokens/) + +### Delete an application + + + + + +To delete an application: + +1. Go to **Settings > Environment > Applications**. +2. Select the three dots next to the application you want to delete and select **Delete application**. +3. Follow the prompts in the window and select **Delete application**. \ No newline at end of file From a5427733e0265641de57b859dec4abf132ceacb9 Mon Sep 17 00:00:00 2001 From: Tamal Anwar Chowdhury Date: Wed, 10 Jun 2026 20:03:49 +0600 Subject: [PATCH 2/6] update the manage application section --- .../build/applications/about-applications.mdx | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/content/docs/build/applications/about-applications.mdx b/src/content/docs/build/applications/about-applications.mdx index 6038811b4..b08613774 100644 --- a/src/content/docs/build/applications/about-applications.mdx +++ b/src/content/docs/build/applications/about-applications.mdx @@ -127,10 +127,43 @@ To be added. ### Configure an application -- [Get application keys](/get-started/connect/getting-app-keys/) to connect your apps -- Set callback URLs using the [relevant SDK](/developer-tools/about/our-sdks/) -- [Set up authentication](/authenticate/authentication-methods/set-up-user-authentication/) -- [Configure tokens](/build/tokens/configure-tokens/) +**Get application keys**: + +You will need the application keys to connect your codebase to Kinde. +1. Go to your application > **Details > App keys**. +2. Copy the **Domain** (or [Custom domain](/build/domains/pointing-your-domain/)), **Client ID**, and **Client secret** (if applicable) + + Learn more about [application keys](/get-started/connect/getting-app-keys/). + +**Set callback URLs**: + +1. Go to your application > **Details > Callback URLs**. +2. Enter the callback URLs for your application generated by the [relevant SDK](/developer-tools/about/our-sdks/). +3. Select **Save**. + + Learn more about [callback URLs](/build/applications/callback-urls/). + +**Set up authentication**: + +Configure how your users authenticate to your application (e.g., email, phone, username, social, enterprise). + +1. Go to your application > **Authentication**. +2. Enable the authentication methods you want to use for your application (e.g., Google, Facebook, Microsoft Entra ID, etc.). +3. Select **Save**. + + Learn more about [authentication methods](/authenticate/authentication-methods/set-up-user-authentication/). + + + +**Configure tokens and sessions**: + +1. Go to your application > **Tokens**. +2. Configure the token expiry, client-specific refresh token cookies, and customize token fields. +3. Go to **Sessions** to configure session policy and the session inactivity timeout. + + Learn more about [tokens](/build/tokens/configure-tokens/) and [session management](/authenticate/manage-authentication/session-management/). ### Delete an application From 80e381653ecdd3470fcea52914fa1e35d62d006c Mon Sep 17 00:00:00 2001 From: Tamal Anwar Chowdhury Date: Wed, 10 Jun 2026 21:04:35 +0600 Subject: [PATCH 3/6] update doc, merging, and add redirect in config file --- astro.config.mjs | 276 +++++++----------- .../build/applications/about-applications.mdx | 131 ++++++--- .../add-and-manage-applications.mdx | 69 ----- 3 files changed, 193 insertions(+), 283 deletions(-) delete mode 100644 src/content/docs/build/applications/add-and-manage-applications.mdx diff --git a/astro.config.mjs b/astro.config.mjs index dbff7e4a3..737644cae 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,18 +1,17 @@ import sitemap from "@astrojs/sitemap"; -import starlight from '@astrojs/starlight'; -import tailwind from '@astrojs/tailwind'; +import starlight from "@astrojs/starlight"; +import tailwind from "@astrojs/tailwind"; import AutoImport from "astro-auto-import"; import icon from "astro-icon"; -import { defineConfig } from 'astro/config'; +import {defineConfig} from "astro/config"; import rehypeAutolinkHeadings from "rehype-autolink-headings"; import rehypeSlug from "rehype-slug"; -import { autolinkConfig } from "./plugins/rehype-autolink-config"; -import { rehypeExternalLinks } from "./plugins/rehype-external-links.mjs"; -import { rehypeTable } from "./plugins/rehype-table.mjs"; -import sidebarConfig from './src/data/sidebarConfig'; +import {autolinkConfig} from "./plugins/rehype-autolink-config"; +import {rehypeExternalLinks} from "./plugins/rehype-external-links.mjs"; +import {rehypeTable} from "./plugins/rehype-table.mjs"; +import sidebarConfig from "./src/data/sidebarConfig"; import mdx from "@astrojs/mdx"; - const expressiveCodeOptions = { themes: ["min-dark", "material-theme-lighter"], styleOverrides: { @@ -21,12 +20,10 @@ const expressiveCodeOptions = { shadowColor: "none", tooltipSuccessBackground: "black", inlineButtonBorder: "transparent" - } } }; - // https://astro.build/config export default defineConfig({ prefetch: false, @@ -38,8 +35,7 @@ export default defineConfig({ "/sitemap.xml": "/sitemap-0.xml", "/developer-tools/kinde-api/register-manage-apis/": "/developer-tools/your-apis/register-manage-apis/", - "/developer-tools/kinde-api/protect-your-api/": - "/developer-tools/your-apis/protect-your-api/", + "/developer-tools/kinde-api/protect-your-api/": "/developer-tools/your-apis/protect-your-api/", "/developer-tools/kinde-api/access-to-your-api/": "/developer-tools/your-apis/access-to-your-api/", "/developer-tools/kinde-api/custom-api-scopes/": @@ -52,54 +48,35 @@ export default defineConfig({ "/developer-tools/kinde-api/access-token-for-api/", "/developer-tools/kinde-api/test-the-connection-to-kindes-api/": "/developer-tools/kinde-api/troubleshoot-kinde-api/", - "/developer-tools/sdks/native/expo-react-native/": - "/developer-tools/sdks/native/expo/", - "/design/pages/design-your-welcome-pages/": - "/design/brand/apply-branding-for-an-organization/", + "/developer-tools/sdks/native/expo-react-native/": "/developer-tools/sdks/native/expo/", + "/design/pages/design-your-welcome-pages/": "/design/brand/apply-branding-for-an-organization/", "/developer-tools/guides/deploy-on-vercel/kinde.com/": "/developer-tools/guides/deploy-on-vercel/", "/design/pages/set-language-for-pages/": "/design/content-customization/set-language-for-pages/", - "/design/pages/internationalization/": - "/design/content-customization/set-language-for-pages/", - + "/design/pages/internationalization/": "/design/content-customization/set-language-for-pages/", + // Section-level redirects to prevent 404s when users truncate URLs - "/authenticate/": - "/authenticate/about-auth/about-authentication/", - "/billing/": - "/billing/about-billing/about-billing/", - "/build/": - "/build/applications/about-applications/", - "/design/": - "/design/brand/global-brand-defaults/", - "/developer-tools/": - "/developer-tools/about/our-sdks/", - "/get-started/": - "/get-started/apis-and-sdks/about-kinde-apis/", - "/integrate/": - "/integrate/connected-apps/add-connected-apps/", + "/authenticate/": "/authenticate/about-auth/about-authentication/", + "/billing/": "/billing/about-billing/about-billing/", + "/build/": "/build/applications/about-applications/", + "/design/": "/design/brand/global-brand-defaults/", + "/developer-tools/": "/developer-tools/about/our-sdks/", + "/get-started/": "/get-started/apis-and-sdks/about-kinde-apis/", + "/integrate/": "/integrate/connected-apps/add-connected-apps/", "/machine-to-machine-applications/": "/machine-to-machine-applications/about-m2m/authenticate-with-m2m/", - "/manage-your-account/": - "/manage-your-account/business-information/update-your-details/", - "/manage-users/": - "/manage-users/about/manage-users-across-organizations/", - "/properties/": - "/properties/about-properties/application-properties/", - "/releases/": - "/releases/about/about-feature-flags/", - "/trust-center/": - "/trust-center/agreements/terms-of-service/", - "/workflows/": - "/workflows/about-workflows/", - "manage-your-apis/": - "manage-your-apis/about-api-keys/api-keys-overview/", - + "/manage-your-account/": "/manage-your-account/business-information/update-your-details/", + "/manage-users/": "/manage-users/about/manage-users-across-organizations/", + "/properties/": "/properties/about-properties/application-properties/", + "/releases/": "/releases/about/about-feature-flags/", + "/trust-center/": "/trust-center/agreements/terms-of-service/", + "/workflows/": "/workflows/about-workflows/", + "manage-your-apis/": "manage-your-apis/about-api-keys/api-keys-overview/", + // Authenticate section subfolder redirects - "/authenticate/about-auth/": - "/authenticate/about-auth/about-authentication/", - "/authenticate/auth-guides/": - "/authenticate/auth-guides/enterprise-connections-identity/", + "/authenticate/about-auth/": "/authenticate/about-auth/about-authentication/", + "/authenticate/auth-guides/": "/authenticate/auth-guides/enterprise-connections-identity/", "/authenticate/authentication-methods/": "/authenticate/authentication-methods/email-authentication/", "/authenticate/custom-configurations/": @@ -110,99 +87,63 @@ export default defineConfig({ "/authenticate/manage-authentication/authenticated-sessions-across-multiple-applications/", "/authenticate/multi-factor-auth/": "/authenticate/multi-factor-auth/about-multi-factor-authentication/", - "/authenticate/social-sign-in/": - "/authenticate/social-sign-in/add-social-sign-in/", - + "/authenticate/social-sign-in/": "/authenticate/social-sign-in/add-social-sign-in/", + // Billing section subfolder redirects - "/billing/about-billing/": - "/billing/about-billing/about-billing/", - "/billing/billing-user-experience/": - "/billing/billing-user-experience/add-pricing-table/", - "/billing/get-started/": - "/billing/get-started/add-billing-role/", - "/billing/manage-plans/": - "/billing/manage-plans/about-plans/", - "/billing/manage-subscribers/": - "/billing/manage-subscribers/add-metered-usage/", - "/billing/payment-management/": - "/billing/payment-management/manage-stripe-connection/", - "/billing/pricing/": - "/billing/pricing/pricing-models/", - + "/billing/about-billing/": "/billing/about-billing/about-billing/", + "/billing/billing-user-experience/": "/billing/billing-user-experience/add-pricing-table/", + "/billing/get-started/": "/billing/get-started/add-billing-role/", + "/billing/manage-plans/": "/billing/manage-plans/about-plans/", + "/billing/manage-subscribers/": "/billing/manage-subscribers/add-metered-usage/", + "/billing/payment-management/": "/billing/payment-management/manage-stripe-connection/", + "/billing/pricing/": "/billing/pricing/pricing-models/", + // Build section subfolder redirects - "/build/applications/": - "/build/applications/about-applications/", - "/build/domains/": - "/build/domains/pointing-your-domain/", - "/build/env-variables/": - "/build/env-variables/add-manage-env-variables/", - "/build/environments/": - "/build/environments/environments/", - "/build/organizations/": - "/build/organizations/add-and-manage-organizations/", - "/build/set-up-options/": - "/build/set-up-options/access-policies/", - "/build/tokens/": - "/build/tokens/about-access-tokens/", - + "/build/applications/": "/build/applications/about-applications/", + "/build/domains/": "/build/domains/pointing-your-domain/", + "/build/env-variables/": "/build/env-variables/add-manage-env-variables/", + "/build/environments/": "/build/environments/environments/", + "/build/organizations/": "/build/organizations/add-and-manage-organizations/", + "/build/set-up-options/": "/build/set-up-options/access-policies/", + "/build/tokens/": "/build/tokens/about-access-tokens/", + "/build/applications/add-and-manage-applications/": "/build/applications/about-applications/", + // Design section subfolder redirects - "/design/brand/": - "/design/brand/global-brand-defaults/", - "/design/content-customization/": - "/design/content-customization/how-content-is-managed/", - "/design/customize-with-code/": - "/design/customize-with-code/connect-repo/", - "/design/pages/": - "/design/pages/page-layout/", + "/design/brand/": "/design/brand/global-brand-defaults/", + "/design/content-customization/": "/design/content-customization/how-content-is-managed/", + "/design/customize-with-code/": "/design/customize-with-code/connect-repo/", + "/design/pages/": "/design/pages/page-layout/", // Your APIs section subfolder redirects - "/manage-your-apis/about-api-keys/": - "/manage-your-apis/about-api-keys/api-keys-overview/", + "/manage-your-apis/about-api-keys/": "/manage-your-apis/about-api-keys/api-keys-overview/", "/manage-your-apis/add-manage-api-keys/": "/manage-your-apis/add-manage-api-keys/create-an-api-key/", "/manage-your-apis/troubleshoot-api-keys/": "/manage-your-apis/troubleshoot-api-keys/common-api-key-errors/", - + // Developer tools section subfolder redirects - "/developer-tools/about/": - "/developer-tools/about/our-sdks/", - "/developer-tools/account-api/": - "/developer-tools/account-api/about-account-api/", - "/developer-tools/guides/": - "/developer-tools/guides/code-sync-errors/", - "/developer-tools/kinde-api/": - "/developer-tools/kinde-api/about-m2m-scopes/", - "/developer-tools/sdks/backend/": - "/developer-tools/sdks/backend/apollo-graphql/", - "/developer-tools/sdks/frontend/": - "/developer-tools/sdks/frontend/javascript-sdk/", - "/developer-tools/sdks/native/": - "/developer-tools/sdks/native/android-sdk/", - "/developer-tools/your-apis/": - "/developer-tools/your-apis/access-to-your-api/", - + "/developer-tools/about/": "/developer-tools/about/our-sdks/", + "/developer-tools/account-api/": "/developer-tools/account-api/about-account-api/", + "/developer-tools/guides/": "/developer-tools/guides/code-sync-errors/", + "/developer-tools/kinde-api/": "/developer-tools/kinde-api/about-m2m-scopes/", + "/developer-tools/sdks/backend/": "/developer-tools/sdks/backend/apollo-graphql/", + "/developer-tools/sdks/frontend/": "/developer-tools/sdks/frontend/javascript-sdk/", + "/developer-tools/sdks/native/": "/developer-tools/sdks/native/android-sdk/", + "/developer-tools/your-apis/": "/developer-tools/your-apis/access-to-your-api/", + // Get started section subfolder redirects - "/get-started/apis-and-sdks/": - "/get-started/apis-and-sdks/about-kinde-apis/", - "/get-started/connect/": - "/get-started/connect/callback-urls/", - "/get-started/guides/": - "/get-started/guides/byo-code/", - "/get-started/learn-about-kinde/": - "/get-started/learn-about-kinde/kinde-product-security/", - "/get-started/switch-to-kinde/": - "/get-started/switch-to-kinde/auth0-to-kinde/", - "/get-started/team-and-account/": - "/get-started/team-and-account/add-team-members/", - + "/get-started/apis-and-sdks/": "/get-started/apis-and-sdks/about-kinde-apis/", + "/get-started/connect/": "/get-started/connect/callback-urls/", + "/get-started/guides/": "/get-started/guides/byo-code/", + "/get-started/learn-about-kinde/": "/get-started/learn-about-kinde/kinde-product-security/", + "/get-started/switch-to-kinde/": "/get-started/switch-to-kinde/auth0-to-kinde/", + "/get-started/team-and-account/": "/get-started/team-and-account/add-team-members/", + // Integrate section subfolder redirects - "/integrate/connected-apps/": - "/integrate/connected-apps/add-connected-apps/", - "/integrate/third-party-tools/": - "/integrate/third-party-tools/cloudflare-zero-trust/", - "/integrate/webhooks/": - "/integrate/webhooks/about-webhooks/", - + "/integrate/connected-apps/": "/integrate/connected-apps/add-connected-apps/", + "/integrate/third-party-tools/": "/integrate/third-party-tools/cloudflare-zero-trust/", + "/integrate/webhooks/": "/integrate/webhooks/about-webhooks/", + // Machine-to-machine applications section subfolder redirects "/machine-to-machine-applications/m2m-application-setup/": "/machine-to-machine-applications/m2m-application-setup/add-feature-flags-to-m2m-applications/", @@ -214,60 +155,43 @@ export default defineConfig({ "/machine-to-machine-applications/organization-scoped-m2m-apps/enforce-org-m2m-access-in-your-api/", "/machine-to-machine-applications/troubleshooting-m2m/": "/machine-to-machine-applications/troubleshooting-m2m/troubleshoot-m2m-token-errors/", - + // Manage your account section subfolder redirects "/manage-your-account/business-information/": "/manage-your-account/business-information/change-your-business-time-zone/", "/manage-your-account/profile-and-plan/": "/manage-your-account/profile-and-plan/change-kinde-plan/", - "/manage-your-account/your-data/": - "/manage-your-account/your-data/check-your-mau/", - + "/manage-your-account/your-data/": "/manage-your-account/your-data/check-your-mau/", + // Manage users section subfolder redirects - "/manage-users/access-control/": - "/manage-users/access-control/accept-policies-signup/", - "/manage-users/add-and-edit/": - "/manage-users/add-and-edit/add-and-edit-users/", + "/manage-users/access-control/": "/manage-users/access-control/accept-policies-signup/", + "/manage-users/add-and-edit/": "/manage-users/add-and-edit/add-and-edit-users/", "/manage-users/roles-and-permissions/": "/manage-users/roles-and-permissions/apply-roles-and-permissions-to-users/", - "/manage-users/view-activity/": - "/manage-users/view-activity/hotjar/", - + "/manage-users/view-activity/": "/manage-users/view-activity/hotjar/", + // Properties section subfolder redirects - "/properties/work-with-properties/": - "/properties/work-with-properties/manage-properties/", - + "/properties/work-with-properties/": "/properties/work-with-properties/manage-properties/", + // Releases section subfolder redirects - "/releases/about/": - "/releases/about/about-feature-flags/", - "/releases/feature-flags/": - "/releases/feature-flags/add-feature-flag/", - "/releases/guides/": - "/releases/guides/guide-to-app-store-approvals/", - + "/releases/about/": "/releases/about/about-feature-flags/", + "/releases/feature-flags/": "/releases/feature-flags/add-feature-flag/", + "/releases/guides/": "/releases/guides/guide-to-app-store-approvals/", + // Trust center section subfolder redirects - "/trust-center/agreements/": - "/trust-center/agreements/end-user-licence-agreement/", - "/trust-center/kinde-performance/": - "/trust-center/kinde-performance/service-status/", - "/trust-center/privacy-and-compliance/": - "/trust-center/privacy-and-compliance/compliance/", - "/trust-center/security/": - "/trust-center/security/security-at-kinde/", - + "/trust-center/agreements/": "/trust-center/agreements/end-user-licence-agreement/", + "/trust-center/kinde-performance/": "/trust-center/kinde-performance/service-status/", + "/trust-center/privacy-and-compliance/": "/trust-center/privacy-and-compliance/compliance/", + "/trust-center/security/": "/trust-center/security/security-at-kinde/", + // Workflows section subfolder redirects - "/workflows/bindings/": - "/workflows/bindings/access-token-binding/", - "/workflows/configuration/": - "/workflows/configuration/bindings/", + "/workflows/bindings/": "/workflows/bindings/access-token-binding/", + "/workflows/configuration/": "/workflows/configuration/bindings/", "/workflows/example-workflows/": "/workflows/example-workflows/existing-password-provided-workflow/", - "/workflows/getting-started/": - "/workflows/getting-started/connect-repo-for-workflows/", - "/workflows/manage-workflows/": - "/workflows/manage-workflows/create-workflow/", - "/workflows/observability/": - "/workflows/observability/workflow-build-logs/", + "/workflows/getting-started/": "/workflows/getting-started/connect-repo-for-workflows/", + "/workflows/manage-workflows/": "/workflows/manage-workflows/create-workflow/", + "/workflows/observability/": "/workflows/observability/workflow-build-logs/" }, markdown: { rehypePlugins: [ @@ -328,10 +252,8 @@ export default defineConfig({ }), icon(), sitemap({ - filter: (page) => !page.includes('404'), - customPages: [ - 'https://docs.kinde.com/' - ] + filter: (page) => !page.includes("404"), + customPages: ["https://docs.kinde.com/"] }), AutoImport({ imports: [ diff --git a/src/content/docs/build/applications/about-applications.mdx b/src/content/docs/build/applications/about-applications.mdx index b08613774..36d28c5bd 100644 --- a/src/content/docs/build/applications/about-applications.mdx +++ b/src/content/docs/build/applications/about-applications.mdx @@ -1,9 +1,10 @@ --- page_id: 4a46eba1-598a-4804-b669-dc96f31d2205 -title: Applications in Kinde +title: About applications in Kinde description: Comprehensive overview of Kinde applications including backend, frontend, and machine-to-machine applications with OAuth 2.0 flows and security considerations. sidebar: order: 1 + label: About applications tableOfContents: maxHeadingLevel: 3 relatedArticles: @@ -14,6 +15,7 @@ topics: - applications - oauth - authentication + - authorization sdk: [] languages: [] audience: developers @@ -21,27 +23,29 @@ complexity: intermediate keywords: - applications - OAuth 2.0 - - authorization flows - - backend apps - - frontend apps - - M2M apps + - authorization code flow + - PKCE - client credentials -updated: 2024-01-15 + - machine to machine + - device authorization flow + - back-end web apps + - front-end apps + - mobile apps + - IoT applications +updated: 2026-06-10 featured: false deprecated: false -ai_summary: Comprehensive overview of Kinde applications including backend, frontend, and machine-to-machine applications with OAuth 2.0 flows and security considerations. +ai_summary: "This page explains what Kinde applications are and how they connect products and services to Kinde for authentication and authorization. It covers four application types: Back-end web apps using the Authorization Code Flow with a client secret for server-rendered applications; Front-end and mobile apps using Authorization Code Flow with PKCE for SPAs, web browsers, and native mobile clients in untrusted environments; Machine to machine (M2M) apps using the Client Credentials grant for backend services, APIs, CLIs, and the Kinde Management API with scope-based access; and Device and IoT apps using the OAuth 2.0 Device Authorization Grant (RFC 8628) for input-limited devices like smart TVs and gaming consoles. The page lists compatible SDKs for each type, notes that Kinde does not support the Implicit Flow, and explains M2M token properties and device flow polling, audiences, and default app settings. It also walks through adding, configuring, and deleting applications in the Kinde dashboard, including app keys, callback URLs, authentication methods, tokens, sessions, and permanent deletion requirements." --- -Applications in Kinde facilitate the receipt of access tokens in your application’s code. Kinde applications use OAuth 2.0 flows to securely pass tokens. +In Kinde, an application represents a product or service that connects to Kinde for authentication and authorization—such as a website, mobile app, or backend API. Each application type uses OAuth 2.0 flows to securely obtain access tokens (and, where applicable, ID tokens) that your code can use to identify users or call protected APIs. -See [Section 4 of the OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749#section-4) for details on Authorization flows. - -We support the following applications and flows: +Kinde supports the following application types: 1. **Back-end web**: For server-rendered web applications -2. **Front-end and mobile**: For client-side, javascript-based single page applications (SPAs) -3. **Machine to machine (M2M)**: For trusted back-end services, APIs, and other systems -4. **Device and IoT**: For TVs, native and IoT applications +2. **Front-end and mobile**: For client-side web and native mobile applications, including JavaScript-based single page applications (SPAs) +3. **Machine to machine (M2M)**: For trusted back-end services, APIs, and other systems that act on their own behalf +4. **Device and IoT**: For devices with limited input capabilities, such as smart TVs, gaming consoles, and IoT applications ![kinde application types](https://imagedelivery.net/skPPZTHzSlcslvHjesZQcQ/297a6959-eefe-496d-463a-6da163997300/socialsharingimage) @@ -49,53 +53,57 @@ We support the following applications and flows: ### Back-end web -Use for server-rendered web applications. Suitable for confidential applications (such as Regular Web Applications) because the application's authentication methods are included in the exchange and must be kept secure. +Use for server-rendered web applications. Suitable for confidential applications (such as Regular Web Applications) because credentials like the client secret can be stored securely on the server. -**Secured with Authorization Code Flow** +#### Secured with Authorization Code Flow This application uses the Authorization Code Flow to exchange an authorization code for a token. -For security, a client secret is required to request an access token. The client secret is known only to the application and the authorization server. So when the application makes a request for an access token, it includes the client secret as a form of authentication. This ensures that the authorization server can verify the identity of the client application. +For security, a client secret is required to request an access token. The client secret is known only to the application and the authorization server. When the application makes a request for an access token, it includes the client secret as a form of authentication. This ensures that the authorization server can verify the identity of the client application. The use of client secrets protects sensitive data from being accessed by unauthorized users and systems. -#### SDKs and compatible frameworks +#### Compatible back-end SDKs -Apollo GraphQL, Elixir, ExpressJS, Express GraphQL, Java, .NET, Next.js, NodeJS, Nuxt, PHP, Python, Ruby, TypeScript. +- [NextJS App Router](/developer-tools/sdks/backend/nextjs-sdk/) and [NextJS Pages Router](/developer-tools/sdks/backend/nextjs-prev-sdk/) +- [TanStack Start React](/developer-tools/sdks/backend/tsr-sdk/) +- [Go SDK](/developer-tools/sdks/backend/go-sdk/) +- [Python SDK](/developer-tools/sdks/backend/python-sdk/) -[View Kinde SDKs](/developer-tools/about/our-sdks/) +See the full list of [Kinde back-end SDKs](/developer-tools/about/our-sdks/#back-end). ### Front-end and mobile -Use for client-side web applications, single page web applications, and mobile applications. Authentication methods are different for these apps because they run in unsecured systems, such as web browsers. +Use for client-side web applications, single page web applications, and mobile applications. Authentication methods are different for these apps because they run in untrusted environments, such as web browsers and mobile devices. #### Secured with Authorization Code Flow and PKCE This application uses the Authorization Code Flow with Proof Key for Code Exchange (PKCE). -Client-side applications, such as single-page web apps, are typically unable to securely store a client secret due to the inherent exposure of client-side code. That’s why OAuth 2.0 recommends the Implicit Flow or PKCE (Proof Key for Code Exchange) to provide security without relying on a client secret. - -