- Ory Console
- Ory CLI
Follow these steps to add LinkedIn as a social sign-in provider to your project using the Ory Console:
- Sign in to Ory Console and select Social Sign-in.
- Click the switch next to the LinkedIn logo to start the configuration.
- Copy the Redirect URI and save it for later use.
- Create a LinkedIn application, verify it and activate Sign In with LinkedInV2.
- Add the saved Redirect URI from Ory to the Authorized redirect URLs in the LinkedIn Auth configuration.
- The following Scopes are available once Sign In with LinkedInV2 has been activated:
openid
profile
email
- Copy the following data from the LinkedIn Auth page to the corresponding fields in the form in the Ory Console:
- Client ID
- Client secret
-
In the Scopes field of the form in the Ory Console, add the following scopes:
openid
profile
email
-
In the Data Mapping field of the form in the Ory Console, add the following Jsonnet code snippet, which maps the desired claims to the Ory Identity schema:
local claims = {
email_verified: false,
} + std.extVar('claims');
{
identity: {
traits: {
// Allowing unverified email addresses enables account
// enumeration attacks, if the value is used for
// verification or as a password login identifier.
//
// Therefore we only return the email if it (a) exists and (b) is marked verified
// by LinkedIn.
[if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,
},
},
}<JsonnetWarning format="Jsonnet code snippets" use="data mapping" />
-
Click Save Configuration.
Follow these steps to add LinkedIn as a social sign-in provider to your project using the Ory CLI:
-
Create a LinkedIn application, verify it and activate Sign In with LinkedInV2.
-
In the created app, add this Redirect URI to the Authorized redirect URLs in the LinkedIn Auth configuration:
https://{project.slug}.projects.oryapis.com/self-service/methods/oidc/callback/linkedin
-
Create a Jsonnet code snippet to map the desired claims to the Ory Identity schema.
local claims = {
email_verified: false,
} + std.extVar('claims');
{
identity: {
traits: {
// Allowing unverified email addresses enables account
// enumeration attacks, if the value is used for
// verification or as a password login identifier.
//
// Therefore we only return the email if it (a) exists and (b) is marked verified
// by LinkedIn.
[if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,
},
},
}<JsonnetWarning format="Jsonnet code snippets" use="data mapping" />
-
Encode the Jsonnet snippet with Base64 or host it under an URL accessible to Ory Network.
cat your-data-mapping.jsonnet | base64
-
Download the Ory Identities config from your project and save it to a file:
## List all available projects
ory list projects
## Get config
ory get identity-config {project-id} --format yaml > identity-config-$project-id.yaml -
Add the social sign-in provider configuration to the downloaded config. Add the Jsonnet snippet with mappings as a Base64 string or provide an URL to the file.
selfservice:
methods:
oidc:
config:
providers:
- id: linkedin # this is `<provider-id>` in the Authorization callback URL. DO NOT CHANGE IT ONCE SET!
provider: linkedin_v2
client_id: .... # Replace this with the Client ID provided by LinkedIn
client_secret: .... # Replace this with the Client Secret provided by LinkedIn
mapper_url: "base64://{YOUR_BASE64_ENCODED_JSONNET_HERE}"
# Alternatively, use an URL:
# mapper_url: https://storage.googleapis.com/abc-cde-prd/9cac9717f007808bf17f22ce7f4295c739604b183f05ac4afb4
scope:
- openid
- profile
- email
enabled: true -
Update the Ory Identities configuration using the file you worked with:
ory update identity-config {project-id} --file identity-config.yaml
Troubleshooting
When you add a social sign-in provider, you can encounter common problems such as:
- Redirect URI mismatch
- Redirect loops during registration
- Domain verification issues
To troubleshoot those issues, read Social sign-in troubleshooting.
Legacy LinkedIn provider
The steps above describe the linkedin_v2
provider. If your application currently uses the old linkedin
, it will continue to
work from our side. But if you need to change the settings or add a new provider, use the linkedin_v2
provider.