Files
zitadel/apps/docs/content/guides/integrate/identity-providers/linkedin_oauth.mdx
T
Florian ForsterandGitHub 2763e93a61 docs: shorten page titles for SEO (#11750)
## What

Shorten the `title` frontmatter on 20 docs pages so that the rendered
`<title>` tag stays within the 70-character SEO limit.

The root layout appends ` | ZITADEL Docs` (15 chars) to every page
title, meaning the raw frontmatter `title` must be ≤ 55 characters. A
site scan flagged all 20 pages for the "Title too long" warning (titles
ranged from 71 to 92 characters in the final rendered tag).

## Why

Search engines may truncate or ignore `<title>` tags longer than 70
characters, hurting click-through rates and keyword relevance in search
results.

## How

Each title was rewritten to:
- Fit within 55 characters (leaving room for ` | ZITADEL Docs`)
- Front-load the primary search keyword (product name, protocol, or
feature)
- Include "ZITADEL" where users realistically search for `{feature}
ZITADEL`
- Avoid generic filler words ("Configure", "Set up", "Support for")

All 20 files already have a `sidebar_label` field that preserves the
original descriptive title for sidebar navigation — no navigation
changes result from this PR.

## Pages updated

| Page | Before (chars) | After (chars) |
|---|---|---|
| concepts/features/passkeys | 82 | 64 |
| guides/integrate/identity-providers/openldap | 72 | 58 |
| guides/solution-scenarios/b2b | 78 | 59 |
| guides/integrate/services/cloudflare-oidc | 86 | 54 |
| guides/integrate/login/hosted-login | 71 | 55 |
| guides/integrate/service-accounts/private-key-jwt | 76 | 56 |
| guides/integrate/service-accounts/client-credentials | 78 | 60 |
| guides/integrate/services/google-cloud | 92 | 57 |
| guides/solution-scenarios/saas | 88 | 65 |
| guides/migrate/sources/auth0 | 73 | 65 |
| guides/integrate/login-ui/oidc-standard | 81 | 55 |
| guides/integrate/login-ui/username-password | 73 | 59 |
| guides/integrate/login-ui/device-auth | 78 | 60 |
| guides/integrate/identity-providers/linkedin_oauth | 72 | 58 |
| guides/integrate/identity-providers/pingfederate-saml | 74 | 61 |
| guides/integrate/service-accounts/personal-access-token | 82 | 62 |
| legal/service-description/cloud-service-description | 76 | 61 |
| guides/integrate/login/login-users | 83 | 55 |
| guides/integrate/identity-providers/migrate | 74 | 65 |
| guides/manage/console/projects-overview | 71 | 62 |

All final `<title>` values are between 54 and 66 characters (well under
the 70-char limit).
2026-03-04 11:14:11 +00:00

84 lines
3.2 KiB
Plaintext

---
title: LinkedIn OAuth Identity Provider in ZITADEL
description: "Configure LinkedIn as an OAuth Identity Provider in ZITADEL to enable secure login with LinkedIn credentials"
sidebar_label: LinkedIn generic OAuth
id: linkedin-oauth
---
import GeneralConfigDescription from './_general_config_description.mdx';
import Intro from './_intro.mdx';
import CustomLoginPolicy from './_custom_login_policy.mdx';
import IDPsOverview from './_idps_overview.mdx';
import GenericOAuth from './_generic_oauth.mdx';
import Activate from './_activate.mdx';
import PrefillAction from './_prefill_action.mdx';
import TestSetup from './_test_setup.mdx';
<Intro components={props.components} provider="LinkedIn"/>
## LinkedIn Configuration
### Register a new client
1. Go to the LinkedIn Developer console and create a new App: https://www.linkedin.com/developers/apps/new
2. Add your App Name, your Company Page and a Logo
3. Add "Sign In with LinkedIn using OpenID Connect" by clicking "Request access"
4. Go to the Auth Settings of the App and add the following URL to the "Authorized redirect URLs"
- Login V1: `${CUSTOM_DOMAIN}/ui/login/login/externalidp/callback`
- Example redirect url for the domain `https://acme.zitadel.cloud` would look like this: `https://acme.zitadel.cloud/ui/login/login/externalidp/callback`
- Login V2: `${CUSTOM_DOMAIN}/idps/callback`
- In this case the url would look like this: `https://acme.zitadel.cloud/idps/callback`
5. Verify the app as your company
6. In the Auth - OAuth 2.0 scopes section you should see `openid`, `profile` and `email` listed
7. Save Client ID and Primary Client Secret from the Application credentials
![](../../../../public/img/guides/linkedin_add_app.png)
## ZITADEL Setup
### Add custom login policy
<CustomLoginPolicy components={props.components} />
### Go to the IdP Providers Overview
<IDPsOverview components={props.components} templates="Generic OAuth"/>
### Create a new Generic OAuth Provider
<GenericOAuth components={props.components}
name=": e.g. LinkedIn"
authendpoint="https://www.linkedin.com/oauth/v2/authorization"
tokenendpoint="https://www.linkedin.com/oauth/v2/accessToken"
userendpoint="https://api.linkedin.com/v2/userinfo"
id="sub"
clientid=": Client id from the application previously created in your LinkedIn account"
clientsecret=": Client Secret from the application previously created in your LinkedIn account"
/>
<GeneralConfigDescription components={props.components} provider_account="LinkedIn account" />
![](../../../../public/img/guides/zitadel_linkedin_create_provider.png)
### Activate IdP
<Activate components={props.components} />
![](../../../../public/img/guides/zitadel_activate_linkedin.png)
## Test the setup
<TestSetup components={props.components} loginscreen="your LinkedIn login"/>
![](../../../../public/img/guides/zitadel_login_linkedin.png)
![](../../../../public/img/guides/linkedin_login.png)
## Optional: Add ZITADEL action to autofill userdata
<PrefillAction components={props.components} fields="firstname, lastname, username, email and email verified" provider="LinkedIn"/>
```js reference
https://github.com/zitadel/actions/blob/main/examples/linkedin_identity_provider.js
```