Ory
This Ory option allows you to add Ory OAuth2 as OIDC provider. In Ory Network, you can create this provider using the Ory
Console or the Ory CLI. When self-hosting Ory, deploy the Ory Hydra Federation server and use the hydra
CLI to create the
client.
The following snippet shows how to create it using the CLI:
ory create project --name "OAuth2 Server - Example Corp"
# Note down the project ID
export project_id=your-project-id # replace with your project ID
ory create oauth2-client --project $project_id \
--name "Example Corp" \
--grant-type authorization_code,refresh_token \
--response-type code \
--scope openid,offline_access,email \
--redirect-uri https://your-project-slug.projects.oryapis.com/self-service/methods/oidc/callback/H1o_k--i # replace with your redirect URI
If you want to learn more head over to the Ory OAuth2 documentation.
To add your Ory OAuth2 server as a social sign-in provider, you need these details:
- Client ID - you get this when creating the client
- Client Secret - you get this when creating the client
- Issuer URL - this is the URL of the Ory Network project or Ory Hydra Federation server instance.
- Ory Console
- Ory CLI
Follow these steps to add an Ory OAuth2 provider to your project using the Ory Console:
- Sign in to Ory Console and select Social Sign-in.
- Click the Add new OpenID Connect provider button.
- Define the Label. This name is used for identification purposes only.
- Paste the configuration details obtained from your social sign-in provider into the corresponding fields in the Console:
- Client ID
- Client Secret
- Issuer URL
- Copy the Redirect URI from the Console and add it to the OAuth2 client you created earlier. You can do this in the Ory Console or using the Ory CLI.
- Click Save Configuration to finish.
These steps cover the basic configuration of a social sign-in provider integration. At this point, the user experience is incomplete. To complete the configuration and ensure a smooth and secure user experience, configure the scopes and data mapping as described in the next section.
Additional configuration
When adding a generic social sign-in provider, you can customize the integration by defining the OAuth scopes Ory requests from the provider and by setting up custom data mappings.
Scopes
The Scopes section allows you to define the OAuth scopes Ory requests from the sign-in provider. Defining scopes allows you to interact with the provider's APIs on behalf of the user, or to access additional user data, which is exposed as claims for data mapping.
For an out of the box setup, use the default scopes openid
, offline_access
and email
.
Data mapping
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 Apple.
[if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,
},
},
}
Follow these steps to add a Ory as a social sign-in provider to your project using the Ory CLI:
- Create a client at your Ory to get a Client ID and Client Secret.
- Create a Jsonnet code snippet to map the desired claims to the Ory Identity schema, such as:
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 Apple.
[if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,
},
},
}
Encode the Jsonnet snippet with Base64 or host it under an URL accessible to Ory Network.
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.yamlAdd 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: yourid # this is `<provider-id>` in the Authorization callback URL. DO NOT CHANGE IT ONCE SET!
provider: generic
client_id: .... # Replace this with the Client ID
client_secret: .... # Replace this with the Client secret
issuer_url: https://your-project-slug.projects.oryapis.com # Replace this with the providers issuer URL
mapper_url: "base64://{YOUR_BASE64_ENCODED_JSONNET_HERE}"
# Alternatively, use an URL:
# mapper_url: https://storage.googleapis.com/abc-cde-prd/9cac9717f007808bf17f22ce7f4295c739604b183f05ac4afb4
scope:
- email
- offline_access
- openid
# supported scopes can be found in your providers dev docs
enabled: trueUpdate 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.