<@U04UQ68083H> I’m facing an issue while integrati...
# ory-copilot
b
@chilly-king-10285 I’m facing an issue while integrating GitHub login with self-hosted ORY Kratos. After the GitHub login process is completed and I receive the user details, how can I initiate the user session in ORY Kratos to ensure a successful login/signup? After successfully retrieving user details using the API https://api.github.com/user, what should be the next step? How do i start the session in Ory Kratos?
b
A message from kapa.ai
To initiate a user session in Ory Kratos after completing the GitHub login process, you need to follow these steps: 1. Configure the GitHub social sign-in provider in Ory Kratos. 2. Set up the necessary OAuth scopes and data mapping. 3. Use the "session" hook to automatically create a session after successful registration. Here's a more detailed explanation: 1. First, make sure you've properly configured GitHub as a social sign-in provider in Ory Kratos. You can do this using the Ory Console or CLI as described in the [GitHub Social Sign-In documentation](https://www.ory.sh/docs/kratos/social-signin/github). 2. In your configuration, ensure you've added the necessary scopes (e.g.,
user:email
) and set up the appropriate data mapping to retrieve the user details you need. 3. To automatically create a session after successful registration with GitHub, you need to add the "session" hook to your Ory Kratos configuration. This is crucial for social sign-in flows to provide a smooth user experience. Add the following configuration to your
kratos.yml
file:
Copy code
yaml selfservice:   flows:     registration:       after:         oidc:           hooks:             - hook: session
This configuration will automatically create a session for the user after they successfully register or log in using GitHub (or any other configured OIDC provider). After adding this configuration, when a user completes the GitHub login process, Ory Kratos will automatically create a session for them. You don't need to manually start the session or make additional API calls to Ory Kratos. The session will be returned in the response after successful authentication. For browser-based flows, Ory Kratos will set a session cookie. For API clients, it will return a session token in the response body. It's important to note that you should not need to manually call the GitHub API to retrieve user details. Ory Kratos handles this process internally based on the scopes and data mapping you've configured. If you're still facing issues after implementing these steps, you may need to review your entire Ory Kratos configuration and ensure all components are properly set up. [Ory Kratos Self-Service Flows Documentation](https://www.ory.sh/docs/kratos/self-service/flows/user-registration#successful-registration) provides more details on how sessions are handled after successful registration, including examples of the response format for both browser-based and API clients.
b
@chilly-king-10285 as mentioned i am using a self hosted open source Ory kratos with using this https://github.com/ory/kratos-nextjs-react-example for custom FE
b
A message from kapa.ai
I understand you're using a self-hosted open-source version of Ory Kratos with a custom frontend based on the Ory Kratos Next.js React example. This context is important for providing a more specific answer to your situation. Given that you're using the Ory Kratos Next.js React example, you're already on the right track for integrating social sign-in, including GitHub login. This example project is designed to work with Ory Kratos and includes the necessary components for handling authentication flows. Here are some key points to consider for your setup: 1. Configuration: Ensure that your self-hosted Ory Kratos instance is properly configured for GitHub social sign-in. This includes setting up the GitHub OAuth app and configuring the provider in your Kratos configuration file. 2. Session Management: The example project you're using already includes session management logic. You can find this in the
src/pkg/sdk.ts
file of the example project, which sets up the Ory SDK with the correct configuration for handling sessions. 3. Login Flow: The example project includes a
pages/login.tsx
file that handles the login flow, including social sign-in. This page should automatically handle the GitHub login process when properly configured. 4. Session Hooks: As mentioned in my previous answer, make sure you have the "session" hook configured in your Kratos configuration to automatically create sessions after successful social sign-in. 5. Environment Variables: Ensure that you've set up the correct environment variables, especially
ORY_SDK_URL
, which should point to your self-hosted Kratos instance. If you've followed the setup instructions for the example project and properly configured your self-hosted Kratos instance, the session should be automatically created after a successful GitHub login. You shouldn't need to manually start the session or make additional API calls to GitHub or Kratos. If you're still experiencing issues, you might want to: 1. Double-check your Kratos configuration, especially the social sign-in and session hook settings. 2. Verify that your GitHub OAuth app is correctly set up with the proper callback URL. 3. Check the Kratos logs for any error messages during the login process. 4. Ensure that the
ORY_SDK_URL
in your Next.js app is correctly pointing to your self-hosted Kratos instance. For more detailed information on setting up and customizing the login flow, you can refer to the [Login and Registration pages documentation](https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-ory-elements#login-and-registration-pages) which explains how these pages interact with Ory APIs to handle authentication flows. If you're still facing specific issues after verifying these points, please provide more details about the exact problem you're encountering, and I'll be happy to assist further.
b
@chilly-king-10285 do i not need to make this call https://api.github.com/user
b
A message from kapa.ai
You're correct in asking about the GitHub API call. Based on the information provided in the knowledge sources, you do not need to make a direct call to
<https://api.github.com/user>
when using Ory Kratos for social sign-in with GitHub. Here's why: 1. Ory Kratos handles the OAuth flow: When properly configured, Ory Kratos manages the entire OAuth process with GitHub, including retrieving user information. 2. Data mapping: Ory Kratos uses a data mapper to extract and map the user information received from GitHub to the Ory identity structure. This is done automatically as part of the social sign-in flow. 3. Automatic session creation: If you've configured the "session" hook as mentioned in the [Social Sign-In documentation](https://www.ory.sh/docs/kratos/social-signin/github), Ory Kratos will automatically create a session after successful authentication with GitHub. The [GitHub social sign-in documentation](https://www.ory.sh/docs/kratos/social-signin/github) explains that you need to set up the OAuth app in GitHub, configure the provider in Ory Kratos, and set up the data mapping. Once these are in place, Ory Kratos handles the interaction with GitHub's API internally. The [data mapping example](https://www.ory.sh/docs/kratos/social-signin/data-mapping#end-to-end-github-example) shows how Ory Kratos processes the claims received from GitHub, which includes the user information you would typically get from the
/user
endpoint. In summary, when using Ory Kratos for social sign-in with GitHub, you should not need to make a separate call to
<https://api.github.com/user>
. Ory Kratos abstracts this process, handling the API interactions and data mapping for you as part of its social sign-in flow.
b
@chilly-king-10285 give me these Social Sign-In documentation steps when using self hosted version of Ory Kratos without using Ory Console
b
A message from kapa.ai
Certainly! I'll provide you with the steps for setting up GitHub social sign-in with a self-hosted version of Ory Kratos without using the Ory Console. These steps are based on the [Social Sign-In documentation](https://www.ory.sh/docs/kratos/social-signin/github) and adapted for self-hosted Kratos: 1. Define the redirect URL for your Ory Kratos instance:
Copy code
http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/github
2. Create a new OAuth App in GitHub: - Go to [GitHub Developer settings → OAuth Apps](https://github.com/settings/developers) - Click "New OAuth App" - Fill in the required details, including the Authorization Callback URL from step 1 3. After registering the application, GitHub will provide you with a Client ID and Client Secret. Keep these for later use. 4. Create a Jsonnet code snippet to map GitHub claims to your Ory Identity schema. Here's a basic example:
Copy code
jsonnet    local claims = {      email_verified: false,    } + std.extVar('claims');     {      identity: {        traits: {          [if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,        },        metadata_public: {          github_username: claims.username,        }      },    }
5. Encode the Jsonnet snippet with Base64 or store it in a location accessible to your Ory Kratos instance. 6. Add the GitHub provider configuration to your Kratos configuration file (e.g.,
kratos.yml
):
Copy code
yaml    selfservice:      methods:        oidc:          config:            providers:              - id: github                provider: github                client_id: <your-github-client-id>                client_secret: <your-github-client-secret>                mapper_url: "base64://{YOUR_BASE64_ENCODED_JSONNET_HERE}"                # Or use a file path:                # mapper_url: file:///etc/config/kratos/github_mapper.jsonnet                scope:                  - user:email          enabled: true      flows:        registration:          after:            oidc:              hooks:                - hook: session
7. Restart your Ory Kratos instance to apply the new configuration. These steps will configure your self-hosted Ory Kratos instance to use GitHub as a social sign-in provider. Remember to adjust the configuration according to your specific needs and environment. For more detailed information on self-hosted Kratos configuration, you can refer to the [Self-hosted Kratos Configuration documentation](https://www.ory.sh/docs/self-hosted/kratos/configuration/oidc).
b
@chilly-king-10285 how to add webauth and passkey methods for signup
b
A message from kapa.ai
To add WebAuthn and Passkey methods for signup in your self-hosted Ory Kratos instance, you need to configure these methods in your Kratos configuration file. Here's how you can do it: 1. WebAuthn Configuration: Add the following to your
kratos.yml
configuration file:
Copy code
yaml selfservice:   methods:     webauthn:       config:         passwordless: false         rp:           display_name: Your Application name           id: localhost  # Set this to your top-level domain           origins:             - <http://localhost:4455>  # Set this to the exact URL of your login page       enabled: true
2. Passkey Configuration: Add the following to your
kratos.yml
configuration file:
Copy code
yaml selfservice:   methods:     passkey:       enabled: true       config:         rp:           display_name: Your Application name           id: localhost  # Set this to your top-level domain           origins:             - <http://localhost:4455>  # Set this to the exact URL of your login page
3. Identity Schema Configuration: You need to update your identity schema to include the WebAuthn and Passkey fields. Here's an example:
Copy code
json {   "$schema": "<http://json-schema.org/draft-07/schema#>",   "type": "object",   "properties": {     "traits": {       "type": "object",       "properties": {         "email": {           "type": "string",           "format": "email",           "title": "Your E-Mail",           "minLength": 3,           "<http://ory.sh/kratos|ory.sh/kratos>": {             "credentials": {               "webauthn": {                 "identifier": true               },               "passkey": {                 "display_name": true               }             }           }         }       }     }   } }
4. Add necessary JavaScript: For WebAuthn, you need to add the WebAuthn JavaScript to your login page:
Copy code
html <head>   <script src="/.well-known/ory/webauthn.js"></script> </head>
After making these changes, restart your Ory Kratos instance to apply the new configuration. Remember to adjust the
id
and
origins
in the configuration to match your actual domain and login page URL. For more detailed information, you can refer to the following documentation: - [Passkeys & WebAuthN documentation](https://www.ory.sh/docs/kratos/passwordless/passkeys) - [WebAuthn Configuration](https://www.ory.sh/docs/kratos/mfa/webauthn-fido-yubikey#configuration) - [Passkey Configuration](https://www.ory.sh/docs/kratos/passwordless/passkeys#passkeys-with-the-dedicated-passkey-strategy) Note that the Passkey method is a more modern and user-friendly implementation of WebAuthn. If you're implementing a new system, it's recommended to use Passkeys instead of the legacy WebAuthn method.
b
@chilly-king-10285 do i need to add /.well-known/ory/webauthn.js if i am using this https://github.com/ory/kratos-nextjs-react-example for custom FE
b
A message from kapa.ai
Based on the information provided in the knowledge sources and the context of your previous questions, I can provide you with a specific answer regarding the use of
/.well-known/ory/webauthn.js
in the Ory Kratos Next.js React example. When using the [Ory Kratos Next.js React example](https://github.com/ory/kratos-nextjs-react-example) for your custom frontend, you do not need to manually add the
/.well-known/ory/webauthn.js
script to your HTML. The example project is designed to work with Ory Kratos out of the box and includes the necessary components for handling authentication flows, including WebAuthn and Passkeys. The example project uses the Ory Elements library, which internally handles the WebAuthn and Passkey functionality. This library abstracts away the need for directly including the WebAuthn script. However, it's important to ensure that your Ory Kratos backend is properly configured to serve the WebAuthn JavaScript file. This is typically done automatically when you set up WebAuthn or Passkeys in your Kratos configuration. If you're using the example project as a starting point for your custom frontend, you should focus on: 1. Configuring WebAuthn and/or Passkeys in your Ory Kratos backend configuration as described in the [Passkeys & WebAuthN documentation](https://www.ory.sh/docs/kratos/passwordless/passkeys). 2. Ensuring that your Ory Kratos instance is accessible to your Next.js application (check the
ORY_SDK_URL
environment variable in the example project). 3. Customizing the UI components as needed, while keeping the core authentication logic intact. By following these steps, you should be able to implement WebAuthn and Passkey functionality without manually adding the
/.well-known/ory/webauthn.js
script to your HTML.
b
@chilly-king-10285 after updating kratos.yml to handle OIDC options i am seeing that
ory_kratos_continuity
cookie is getting created. is that intended
b
A message from kapa.ai
Yes, the creation of the
ory_kratos_continuity
cookie is intended behavior when using OIDC (OpenID Connect) options in Ory Kratos. This cookie is an essential part of the OIDC flow and serves a specific purpose. The
ory_kratos_continuity
cookie is used by Ory Kratos to maintain state during the OIDC authentication process. It helps Kratos keep track of the ongoing authentication flow, especially when redirecting the user to the identity provider (in your case, GitHub) and back. According to the [Ory Kratos Session Management documentation](https://www.ory.sh/docs/kratos/session-management/overview#using-ory-session-cookie), Kratos uses several cookies for different purposes: 1. `ory_kratos_session`: The main session cookie. 2. `csrf_token`: Used for CSRF protection. 3. `ory_kratos_continuity`: Used for maintaining state during multi-step flows like OIDC. It's worth noting that there have been some issues reported regarding the domain setting of the
ory_kratos_continuity
cookie. As mentioned in a [GitHub issue](https://github.com/ory/kratos/issues/2713), the cookie might not have its domain set correctly in some cases, which can cause problems in multi-domain setups. If you're experiencing any issues related to this cookie, especially if you're running Kratos under a subdomain, you might want to check your cookie configuration. The [Cookie Settings documentation](https://www.ory.sh/docs/kratos/guides/configuring-cookies) provides information on how to configure cookie domains and paths if needed. In summary, the creation of the
ory_kratos_continuity
cookie after updating your
kratos.yml
to handle OIDC options is expected and necessary for the proper functioning of the OIDC flow in Ory Kratos.
b
@chilly-king-10285 but i am using this https://github.com/ory/kratos-nextjs-react-example for custom FE and after clicking on github or google options i am getting 404. What is the correct next step ?
b
A message from kapa.ai
I understand you're using the Ory Kratos Next.js React example for your custom frontend and encountering a 404 error after clicking on the GitHub or Google sign-in options. This issue suggests there might be a mismatch between your frontend configuration and your Ory Kratos backend setup. Let's go through some steps to troubleshoot and resolve this issue: 1. Check your Ory Kratos configuration: Ensure that your
kratos.yml
file is correctly configured for social sign-in providers. The [Social Sign-In documentation](https://www.ory.sh/docs/kratos/social-signin/github) provides the necessary steps for setting up GitHub and other providers. Make sure you've added the correct provider configurations under the
selfservice.methods.oidc.config.providers
section. 2. Verify the redirect URIs: Double-check that the redirect URIs in your GitHub and Google OAuth app settings match the ones expected by your Ory Kratos instance. The redirect URI should typically be in this format:
Copy code
http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/<provider>
Replace
<provider>
with
github
or
google
accordingly. 3. Check your environment variables: In the Next.js example project, make sure the
ORY_SDK_URL
environment variable is correctly set to point to your self-hosted Ory Kratos instance. This should be in your
.env.local
file or set as an environment variable. 4. Inspect the network requests: Use your browser's developer tools to inspect the network requests when you click on the social sign-in options. Look for any errors in the request or response that might provide more information about the 404 error. 5. Check Ory Kratos logs: Examine the logs of your self-hosted Ory Kratos instance for any error messages or warnings that might explain why the social sign-in flow is failing. 6. Verify the frontend routes: Ensure that your Next.js application is correctly set up to handle the social sign-in flow. The example project should have this configured, but double-check the
pages/login.tsx
and
pages/registration.tsx
files to ensure they're handling the OIDC flow correctly. 7. Update to the latest version: Make sure you're using the latest version of the Ory Kratos Next.js React example and that your Ory Kratos instance is up to date. There might have been fixes or improvements in recent versions. If after checking these points you're still encountering issues, you might want to: 1. Review the [Login and Registration pages documentation](https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-ory-elements#login-and-registration-pages) to ensure your custom frontend is correctly implementing the authentication flow. 2. Check the [GitHub issues for the example project](https://github.com/ory/kratos-nextjs-react-example/issues) to see if others have reported similar problems and if there are any known solutions.
I understand you're using the Ory Kratos Next.js React example for your custom frontend and encountering a 404 error after clicking on the GitHub or Google sign-in options. This issue suggests there might be a mismatch between your frontend configuration and your Ory Kratos backend setup. Let's go through some steps to troubleshoot and resolve this issue: 1. Check your Ory Kratos configuration: Ensure that your
kratos.yml
file is correctly configured for social sign-in providers. The [Social Sign-In documentation](https://www.ory.sh/docs/kratos/social-signin/github) provides the necessary steps for setting up GitHub and other providers. Make sure you've added the correct provider configurations under the
selfservice.methods.oidc.config.providers
section. 2. Verify the redirect URIs: Double-check that the redirect URIs in your GitHub and Google OAuth app settings match the ones expected by your Ory Kratos instance. The redirect URI should typically be in this format:
Copy code
http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/<provider>
Replace
<provider>
with
github
or
google
accordingly. 3. Check your environment variables: In the Next.js example project, make sure the
ORY_SDK_URL
environment variable is correctly set to point to your self-hosted Ory Kratos instance. This should be in your
.env.local
file or set as an environment variable. 4. Inspect the network requests: Use your browser's developer tools to inspect the network requests when you click on the social sign-in options. Look for any errors in the request or response that might provide more information about the 404 error. 5. Check Ory Kratos logs: Examine the logs of your self-hosted Ory Kratos instance for any error messages or warnings that might explain why the social sign-in flow is failing. 6. Verify the frontend routes: Ensure that your Next.js application is correctly set up to handle the social sign-in flow. The example project should have this configured, but double-check the
pages/login.tsx
and
pages/registration.tsx
files to ensure they're handling the OIDC flow correctly. 7. Update to the latest version: Make sure you're using the latest version of the Ory Kratos Next.js React example and that your Ory Kratos instance is up to date. There might have been fixes or improvements in recent versions. If after checking these points you're still encountering issues, you might want to: 1. Review the [Login and Registration pages documentation](https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-ory-elements#login-and-registration-pages) to ensure your custom frontend is correctly implementing the authentication flow. 2. Check the [GitHub issues for the example project](https://github.com/ory/kratos-nextjs-react-example/issues) to see if others have reported similar problems and if there are any known solutions. If the problem persists, you may need to provide more specific details about your setup, including your Kratos configuration (with sensitive information redacted) and the exact steps to reproduce the error. This would help in diagnosing the issue more accurately.
b
@chilly-king-10285 give me detailed steps to add Github and Google OIDC in self-hosted open-source version of Ory Kratos
b
A message from kapa.ai
Certainly! I'll provide you with detailed steps to add GitHub and Google OIDC in a self-hosted open-source version of Ory Kratos. These steps are based on the [Social Sign-In documentation](https://www.ory.sh/docs/kratos/social-signin/overview) and adapted for self-hosted Kratos without using the Ory Console. 1. Set up OAuth Apps: a. For GitHub: - Go to [GitHub Developer settings → OAuth Apps](https://github.com/settings/developers) - Click "New OAuth App" - Fill in the required details, including the Authorization Callback URL:
Copy code
http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/github
- After registering, note down the Client ID and Client Secret b. For Google: - Go to [Google Cloud Console → APIs & Services](https://console.cloud.google.com/apis/) - Create a new project or select an existing one - Go to [Credentials](https://console.cloud.google.com/apis/credentials) and create a new OAuth client ID - Set the Authorized redirect URI:
Copy code
http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/google
- Note down the Client ID and Client Secret 2. Create Jsonnet mapping files: a. For GitHub (save as
github_mapper.jsonnet
):
Copy code
jsonnet
   local claims = {
     email_verified: false,
   } + std.extVar('claims');

   {
     identity: {
       traits: {
         [if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,
         name: claims.name,
         github_username: claims.login,
       },
     },
   }
b. For Google (save as
google_mapper.jsonnet
):
Copy code
jsonnet
   local claims = {
     email_verified: false,
   } + std.extVar('claims');

   {
     identity: {
       traits: {
         [if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,
         name: claims.name,
       },
     },
   }
3. Update your Kratos configuration file (
kratos.yml
):
Copy code
yaml
   selfservice:
     methods:
       oidc:
         enabled: true
         config:
           providers:
             - id: github
               provider: github
               client_id: <your-github-client-id>
               client_secret: <your-github-client-secret>
               mapper_url: file:///etc/config/kratos/github_mapper.jsonnet
               scope:
                 - user:email
             - id: google
               provider: google
               client_id: <your-google-client-id>
               client_secret: <your-google-client-secret>
               mapper_url: file:///etc/config/kratos/google_mapper.jsonnet
               scope:
                 - email
                 - profile
     flows:
       registration:
         after:
           oidc:
             hooks:
               - hook: session
       login:
         after:
           oidc:
             hooks:
               - hook: session
Certainly! I'll provide you with detailed steps to add GitHub and Google OIDC in a self-hosted open-source version of Ory Kratos. These steps are based on the [Social Sign-In documentation](https://www.ory.sh/docs/kratos/social-signin/overview) and adapted for self-hosted Kratos without using the Ory Console. 1. Set up OAuth Apps: a. For GitHub: - Go to [GitHub Developer settings → OAuth Apps](https://github.com/settings/developers) - Click "New OAuth App" - Fill in the required details, including the Authorization Callback URL:
Copy code
http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/github
- After registering, note down the Client ID and Client Secret b. For Google: - Go to [Google Cloud Console → APIs & Services](https://console.cloud.google.com/apis/) - Create a new project or select an existing one - Go to [Credentials](https://console.cloud.google.com/apis/credentials) and create a new OAuth client ID - Set the Authorized redirect URI:
Copy code
http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/google
- Note down the Client ID and Client Secret 2. Create Jsonnet mapping files: a. For GitHub (save as
github_mapper.jsonnet
):
Copy code
jsonnet    local claims = {      email_verified: false,    } + std.extVar('claims');     {      identity: {        traits: {          [if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,          name: claims.name,          github_username: claims.login,        },      },    }
b. For Google (save as
google_mapper.jsonnet
):
Copy code
jsonnet    local claims = {      email_verified: false,    } + std.extVar('claims');     {      identity: {        traits: {          [if 'email' in claims && claims.email_verified then 'email' else null]: claims.email,          name: claims.name,        },      },    }
3. Update your Kratos configuration file (
kratos.yml
):
Copy code
yaml    selfservice:      methods:        oidc:          enabled: true          config:            providers:              - id: github                provider: github                client_id: <your-github-client-id>                client_secret: <your-github-client-secret>                mapper_url: file:///etc/config/kratos/github_mapper.jsonnet                scope:                  - user:email              - id: google                provider: google                client_id: <your-google-client-id>                client_secret: <your-google-client-secret>                mapper_url: file:///etc/config/kratos/google_mapper.jsonnet                scope:                  - email                  - profile      flows:        registration:          after:            oidc:              hooks:                - hook: session        login:          after:            oidc:              hooks:                - hook: session
Make sure to replace
<your-github-client-id>
,
<your-github-client-secret>
,
<your-google-client-id>
, and
<your-google-client-secret>
with the actual values from steps 1a and 1b. 4. Update your Identity Schema: Ensure your identity schema (
identity.schema.json
) includes the necessary fields for GitHub and Google data:
Copy code
json    {      "$id": "<https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json>",      "$schema": "<http://json-schema.org/draft-07/schema#>",      "title": "Person",      "type": "object",      "properties": {        "traits": {          "type": "object",          "properties": {            "email": {              "type": "string",              "format": "email",              "title": "E-Mail",              "minLength": 3,              "<http://ory.sh/kratos|ory.sh/kratos>": {                "credentials": {                  "password": {                    "identifier": true                  }                },                "verification": {                  "via": "email"                },                "recovery": {                  "via": "email"                }              }            },            "name": {              "type": "string"            },            "github_username": {              "type": "string"            }          },          "required": [            "email"          ],          "additionalProperties": false        }      }    }
5. Place the Jsonnet mapping files: Place
github_mapper.jsonnet
and
google_mapper.jsonnet
in the
/etc/config/kratos/
directory (or wherever you specified in the
kratos.yml
file). 6. Restart Ory Kratos: After making these changes, restart your Ory Kratos instance to apply the new configuration. 7. Update your frontend: If you're using the [Ory Kratos Next.js React example](https://github.com/ory/kratos-nextjs-react-example), ensure that the
ORY_SDK_URL
environment variable in your
.env.local
file points to your self-hosted Kratos instance:
Copy code
ORY_SDK_URL=http(s)://<domain-of-ory-kratos>:<public-port>
8. Test the integration: Try logging in or registering using the GitHub and Google options in your frontend. If you encounter any issues, check the Kratos logs for error messages. Remember to adjust file paths, URLs, and other configuration details according to your specific setup. Also, ensure that your Kratos instance is accessible from your frontend application. For more detailed information, you can refer to the [Self-hosted Kratos Configuration documentation](https://www.ory.sh/docs/self-hosted/kratos/configuration/oidc) and the [Social Sign-In documentation](https://www.ory.sh/docs/kratos/social-signin/overview).
b
@chilly-king-10285 give me kratos.yml file with all options turned on
b
A message from kapa.ai
I apologize, but I cannot provide a complete
kratos.yml
file with all options turned on, as this would be an extremely long and potentially insecure configuration. However, I can provide you with a basic structure of a
kratos.yml
file with some common options enabled. Please note that this is not a production-ready configuration and should be carefully reviewed and adjusted for your specific needs. Here's a sample
kratos.yml
file with several important options enabled: ```yaml version: v0.11.0 dsn: postgres://user:password@postgres:5432/kratos?sslmode=disable&amp;max_conns=20&amp;max_idle_conns=4 serve: public: base_url: https://public.kratos.example.com/ cors: enabled: true allowed_origins: - https://www.example.com allowed_methods: - POST - GET - PUT - PATCH - DELETE admin: base_url: https://admin.kratos.example.com/ selfservice: default_browser_return_url: https://www.example.com/ allowed_return_urls: - https://www.example.com methods: password: enabled: true oidc: enabled: true config: providers: - id: github provider: github client_id: your_github_client_id client_secret: your_github_client_secret mapper_url: file:///etc/config/kratos/github_mapper.jsonnet scope: - user:email - id: google provider: google client_id: your_google_client_id client_secret: your_google_client_secret mapper_url: file:///etc/config/kratos/google_mapper.jsonnet scope: - email - profile link: enabled: true code: enabled: true lookup_secret: enabled: true totp: enabled: true config: issuer: Your Application Name webauthn: enabled: true config: rp: id: example.com origin: https://www.example.com passkey: enabled: true config: rp: id: example.com origin: https://www.example.com flows: login: ui_url: https://www.example.com/login lifespan: 10m registration: ui_url: https://www.example.com/registration lifespan: 10m after: password: hooks: - hook: session oidc: hooks: - hook: session settings: ui_url: https://www.example.com/settings privileged_session_max_age: 15m recovery: enabled: true ui_url: https://www.example.com/recovery verification: enabled: true ui_url: https://www.example.com/verification logout: after: default_browser_return_url: https://www.example.com/login log: level: info format: text secrets: cookie: - PLEASE-CHANGE-ME-I-AM-VERY-INSECURE cipher: - 32-LONG-SECRET-NOT-SECURE-AT-ALL ciphers: algorithm: xchacha20-poly1305
I apologize, but I cannot provide a complete
kratos.yml
file with all options turned on, as this would be an extremely long and potentially insecure configuration. However, I can provide you with a basic structure of a
kratos.yml
file with some common options enabled. Please note that this is not a production-ready configuration and should be carefully reviewed and adjusted for your specific needs. Here's a sample
kratos.yml
file with several important options enabled:
Copy code
yaml version: v0.11.0  dsn: <postgres://user:password@postgres:5432/kratos?sslmode=disable&max_conns=20&max_idle_conns=4>  serve:   public:     base_url: <https://public.kratos.example.com/>     cors:       enabled: true       allowed_origins:         - <https://www.example.com>       allowed_methods:         - POST         - GET         - PUT         - PATCH         - DELETE   admin:     base_url: <https://admin.kratos.example.com/>  selfservice:   default_browser_return_url: <https://www.example.com/>   allowed_return_urls:     - <https://www.example.com>    methods:     password:       enabled: true     oidc:       enabled: true       config:         providers:           - id: github             provider: github             client_id: your_github_client_id             client_secret: your_github_client_secret             mapper_url: file:///etc/config/kratos/github_mapper.jsonnet             scope:               - user:email           - id: google             provider: google             client_id: your_google_client_id             client_secret: your_google_client_secret             mapper_url: file:///etc/config/kratos/google_mapper.jsonnet             scope:               - email               - profile     link:       enabled: true     code:       enabled: true     lookup_secret:       enabled: true     totp:       enabled: true       config:         issuer: Your Application Name     webauthn:       enabled: true       config:         rp:           id: <http://example.com|example.com>           origin: <https://www.example.com>     passkey:       enabled: true       config:         rp:           id: <http://example.com|example.com>           origin: <https://www.example.com>    flows:     login:       ui_url: <https://www.example.com/login>       lifespan: 10m     registration:       ui_url: <https://www.example.com/registration>       lifespan: 10m       after:         password:           hooks:             - hook: session         oidc:           hooks:             - hook: session     settings:       ui_url: <https://www.example.com/settings>       privileged_session_max_age: 15m     recovery:       enabled: true       ui_url: <https://www.example.com/recovery>     verification:       enabled: true       ui_url: <https://www.example.com/verification>     logout:       after:         default_browser_return_url: <https://www.example.com/login>  log:   level: info   format: text  secrets:   cookie:     - PLEASE-CHANGE-ME-I-AM-VERY-INSECURE   cipher:     - 32-LONG-SECRET-NOT-SECURE-AT-ALL  ciphers:   algorithm: xchacha20-poly1305  hashers:   algorithm: bcrypt   bcrypt:     cost: 12  identity:   default_schema_id: default   schemas:     - id: default       url: file:///etc/config/kratos/identity.schema.json  courier:   smtp:     connection_uri: <smtps://test:test@mailslurper:1025/?skip_ssl_verify=true>
This configuration includes options for: 1. Database connection 2. Public and admin interfaces 3. Various authentication methods (password, OIDC, link, code, lookup secret, TOTP, WebAuthn, Passkey) 4. Self-service flows (login, registration, settings, recovery, verification, logout) 5. Logging 6. Secrets and ciphers 7. Password hashing 8. Identity schemas 9. Email courier Remember to replace placeholder values (like URLs, client IDs, and secrets) with your actual configuration. Also, review each option carefully and adjust according to your specific requirements and security needs. For a complete list of all available options and their descriptions, please refer to the [Ory Kratos Configuration Reference](https://www.ory.sh/docs/kratos/reference/configuration). [Ory Kratos Configuration Documentation](https://www.ory.sh/docs/kratos/configuring) provides more details on how to properly configure Ory Kratos for production use. </assistant_answer>
b
@chilly-king-10285 on clicking the github or google login option i can see only
ory_kratos_continuity
cookie getting generated but no
ory_kratos_session
cookie. Is that an issue
b
A message from kapa.ai
Based on the information provided in the knowledge sources and our previous conversation, the behavior you're observing where only the
ory_kratos_continuity
cookie is generated when clicking on the GitHub or Google login option, without the
ory_kratos_session
cookie, is expected at this stage of the authentication process. Here's why: 1. The
ory_kratos_continuity
cookie is used by Ory Kratos to maintain state during the OIDC authentication process. It's created when you initiate the social login flow and helps Kratos keep track of the ongoing authentication process [Source](https://github.com/ory/network/issues/53). 2. The
ory_kratos_session
cookie is only created after a successful authentication. It's not generated immediately when you click on the social login option, but rather after the entire authentication flow is completed [Source](https://www.ory.sh/docs/kratos/self-service/flows/user-login#successful-login). 3. The social login process involves redirecting the user to the identity provider (GitHub or Google in your case) and then back to your application. The
ory_kratos_session
cookie will only be set after this entire process is completed successfully. To ensure that the
ory_kratos_session
cookie is created after successful authentication, make sure you have configured the "session" hook in your
kratos.yml
file under the OIDC registration and login flows:
Copy code
yaml selfservice:   flows:     registration:       after:         oidc:           hooks:             - hook: session     login:       after:         oidc:           hooks:             - hook: session
If you've confirmed this configuration and you're still not seeing the
ory_kratos_session
cookie after completing the entire login process (including the redirect back from GitHub or Google), then there might be an issue with your setup. In that case, you should: 1. Check your Ory Kratos logs for any error messages. 2. Verify that the redirect URIs in your GitHub and Google OAuth app settings match the ones expected by your Ory Kratos instance. 3. Ensure that your frontend application (based on the Ory Kratos Next.js React example) is correctly handling the authentication flow. If the problem persists after these checks, you may need to investigate further by examining the network requests and responses during the authentication process using your browser's developer tools.
b
@chilly-king-10285 expand on this point
Ensure that your frontend application (based on the Ory Kratos Next.js React example) is correctly handling the authentication flow.
b
A message from kapa.ai
To ensure that your frontend application, based on the Ory Kratos Next.js React example, is correctly handling the authentication flow, you should focus on the following key aspects: 1. Environment Configuration: Make sure your
.env.local
file is correctly set up with the
ORY_SDK_URL
pointing to your self-hosted Kratos instance:
Copy code
ORY_SDK_URL=http(s)://<domain-of-ory-kratos>:<public-port>
This is crucial for the frontend to communicate with your Kratos backend [Source](https://www.ory.sh/docs/getting-started/integrate-auth/nextjs#run-your-nextjs-app). 2. SDK Configuration: Check that the Ory SDK is properly initialized in your application. This is typically done in a file like `src/pkg/sdk.ts`:
Copy code
typescript
   import { Configuration, FrontendApi } from "@ory/client"
   import { edgeConfig } from "@ory/integrations/next"

   const ory = new FrontendApi(new Configuration(edgeConfig))
This setup ensures that the SDK is configured to work with your Kratos instance [Source](https://www.ory.sh/docs/getting-started/integrate-auth/nextjs#require-login-to-access-the-home-page). 3. Login Flow Handling: Review your login page (usually
pages/login.tsx
) to ensure it's correctly implementing the login flow. It should: - Create or fetch a login flow - Render the appropriate UI elements for social login - Handle the response after social login redirect Here's a simplified example:
Copy code
typescript
   useEffect(() => {
     ory
       .createBrowserLoginFlow()
       .then(({ data: flow }) => {
         setFlow(flow)
       })
       .catch((err) => {
         // Handle error
       })
   }, [])
[Source](https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-basic-integration#create-login-flow) 4. Session Management: Ensure your application is correctly checking for and handling sessions. This is typically done in protected routes or components:
Copy code
typescript
   useEffect(() => {
     ory
       .toSession()
       .then(({ data }) => {
         setSession(data)
       })
       .catch(() => {
         // Redirect to login page
         router.push("/login")
       })
   }, [])
[Source](https://www.ory.sh/docs/getting-started/integrate-auth/nextjs#require-login-to-access-the-home-page) 5. Error Handling: Implement proper error handling for authentication flows. This includes handling errors from Kratos API calls and displaying appropriate messages to users. 6. Redirect Handling: Ensure your application correctly handles redirects after social login. This typically involves checking for flow IDs in the URL and fetching the appropriate flow data. 7. CSRF Protection: Verify that CSRF tokens are correctly included in your forms and requests to Kratos. 8. Logout Flow: Implement a proper logout flow that destroys the session both on the frontend and in Kratos.
To ensure that your frontend application, based on the Ory Kratos Next.js React example, is correctly handling the authentication flow, you should focus on the following key aspects: 1. Environment Configuration: Make sure your
.env.local
file is correctly set up with the
ORY_SDK_URL
pointing to your self-hosted Kratos instance:
Copy code
ORY_SDK_URL=http(s)://<domain-of-ory-kratos>:<public-port>
This is crucial for the frontend to communicate with your Kratos backend [Source](https://www.ory.sh/docs/getting-started/integrate-auth/nextjs#run-your-nextjs-app). 2. SDK Configuration: Check that the Ory SDK is properly initialized in your application. This is typically done in a file like `src/pkg/sdk.ts`:
Copy code
typescript    import { Configuration, FrontendApi } from "@ory/client"    import { edgeConfig } from "@ory/integrations/next"     const ory = new FrontendApi(new Configuration(edgeConfig))
This setup ensures that the SDK is configured to work with your Kratos instance [Source](https://www.ory.sh/docs/getting-started/integrate-auth/nextjs#require-login-to-access-the-home-page). 3. Login Flow Handling: Review your login page (usually
pages/login.tsx
) to ensure it's correctly implementing the login flow. It should: - Create or fetch a login flow - Render the appropriate UI elements for social login - Handle the response after social login redirect Here's a simplified example:
Copy code
typescript    useEffect(() => {      ory        .createBrowserLoginFlow()        .then(({ data: flow }) => {          setFlow(flow)        })        .catch((err) => {          // Handle error        })    }, [])
[Source](https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-basic-integration#create-login-flow) 4. Session Management: Ensure your application is correctly checking for and handling sessions. This is typically done in protected routes or components:
Copy code
typescript    useEffect(() => {      ory        .toSession()        .then(({ data }) => {          setSession(data)        })        .catch(() => {          // Redirect to login page          router.push("/login")        })    }, [])
[Source](https://www.ory.sh/docs/getting-started/integrate-auth/nextjs#require-login-to-access-the-home-page) 5. Error Handling: Implement proper error handling for authentication flows. This includes handling errors from Kratos API calls and displaying appropriate messages to users. 6. Redirect Handling: Ensure your application correctly handles redirects after social login. This typically involves checking for flow IDs in the URL and fetching the appropriate flow data. 7. CSRF Protection: Verify that CSRF tokens are correctly included in your forms and requests to Kratos. 8. Logout Flow: Implement a proper logout flow that destroys the session both on the frontend and in Kratos. By carefully reviewing and implementing these aspects, you can ensure that your frontend application is correctly handling the authentication flow with Ory Kratos. If you're still experiencing issues, you may need to use browser developer tools to inspect network requests and responses during the authentication process to identify any specific problems. For more detailed information on implementing these flows, refer to the [Login and Registration pages documentation](https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-ory-elements#login-and-registration-pages) which provides examples of how these pages should interact with Ory APIs to handle authentication flows.
b
@chilly-king-10285 i am getting this error time=2025-03-10T193304Z level=error msg=Unable to instantiate configuration. audience=application error=map[message:I[#/selfservice/flows/login/after] S[#/properties/selfservice/properties/flows/properties/login/properties/after/$ref] doesn’t validate with “#/definitions/selfServiceAfterLogin” I[#/selfservice/flows/login/after/oidc] S[#/definitions/selfServiceAfterLogin/properties/oidc/$ref] doesn’t validate with “#/definitions/selfServiceAfterOIDCLoginMethod” after adding login: after: oidc: hooks: - hook: session
b
A message from kapa.ai
The error you're encountering suggests that there's an issue with the configuration of the login flow in your
kratos.yml
file, specifically in the
selfservice.flows.login.after.oidc
section. The configuration you've added is not valid according to the current schema for Ory Kratos. This error typically occurs when the configuration structure doesn't match the expected format. Based on the available documentation and the error message, here's how you can correct your configuration: 1. First, ensure that you have the
oidc
method enabled in your configuration:
Copy code
yaml selfservice:   methods:     oidc:       enabled: true
2. Then, modify your login flow configuration as follows:
Copy code
yaml selfservice:   flows:     login:       after:         password:           hooks:             - hook: session         oidc:           hooks:             - hook: session
The key difference here is that the
oidc
configuration should be at the same level as
password
, not nested under
after
. This structure aligns with the expected configuration format for Ory Kratos. 3. If you want to apply the session hook to all methods, you can use this configuration:
Copy code
yaml selfservice:   flows:     login:       after:         default_browser_return_url: <http://localhost:4455/>         hooks:           - hook: session
This configuration applies the session hook to all authentication methods, including OIDC. 4. Make sure you have a similar configuration for the registration flow as well:
Copy code
yaml selfservice:   flows:     registration:       after:         password:           hooks:             - hook: session         oidc:           hooks:             - hook: session
After making these changes, restart your Ory Kratos instance to apply the new configuration. If you continue to experience issues, you may want to refer to the [Ory Kratos Configuration Reference](https://www.ory.sh/docs/kratos/reference/configuration) for the most up-to-date configuration structure. The configuration format can change between versions, so ensure that your configuration matches the version of Ory Kratos you're using. Remember to always validate your YAML syntax after making changes to avoid any formatting errors. [Ory Kratos Hooks Documentation](https://www.ory.sh/docs/kratos/hooks/configure-hooks) provides more details on configuring hooks for different flows and methods. If the problem persists after these changes, you may need to review your entire
kratos.yml
file for any other potential conflicts or misconfigurations.
b
@chilly-king-10285
hook: session
: This is the problematic part. “session” is not a valid hook type.
b
A message from kapa.ai
I apologize for the confusion in my previous responses. You are correct, and I made a mistake in interpreting the configuration. The
session
hook is indeed not a valid hook type in the context you've described. Let me provide you with the correct information based on the available knowledge sources. The
session
action (not hook) is used to sign in the user after they successfully register or log in. It's not configured as a hook, but rather as part of the flow configuration. Here's the correct way to configure it:
Copy code
yaml selfservice:   flows:     registration:       after:         password:           hooks:             - hook: show_verification_ui           hooks:             - hook: session     login:       after:         password:           hooks:             - hook: revoke_active_sessions         oidc:           hooks:             - hook: revoke_active_sessions
In this configuration: 1. The
session
action is used directly under the
after
section for each method (password, oidc), not as a hook. 2. Other valid hooks like
show_verification_ui
or
revoke_active_sessions
can be used as actual hooks. The [Actions in Ory Identities documentation](https://www.ory.sh/docs/kratos/hooks/configure-hooks#available-actions) lists the available actions, including
session
, which is described as: "Signs in the user immediately after they create an account." For OIDC providers specifically, the [Self-hosted Kratos Configuration documentation](https://www.ory.sh/docs/self-hosted/kratos/configuration/oidc) recommends adding the
session
action to prevent having to log in again after sign-up:
Copy code
yaml selfservice:   flows:     registration:       after:         oidc:           hooks:             - hook: session
I apologize again for the earlier confusion. Thank you for bringing this to my attention, as it allows me to provide more accurate information.
b
@chilly-king-10285 after the Github login is complete and user is comes back to the /self-service/methods/oidc/callback/github slug what are the next steps ?
b
A message from kapa.ai
After the GitHub login is complete and the user is redirected back to the
/self-service/methods/oidc/callback/github
slug, Ory Kratos handles several steps automatically. Here's what happens next: 1. Ory Kratos processes the callback: Kratos validates the callback data received from GitHub and extracts the user information. 2. Data mapping: Kratos uses the configured Jsonnet mapper (as defined in your
kratos.yml
) to map the GitHub user data to your Ory Identity schema. 3. Identity creation or update: If this is a new user, Kratos creates a new identity. If the user already exists, their identity is updated with any new information from GitHub. 4. Session creation: Assuming you've configured the
session
action in your
kratos.yml
file, Kratos automatically creates a session for the user. This is done as part of the flow configuration, not as a hook. 5. Redirect: Kratos redirects the user to the configured post-login URL. This URL is typically set in your
kratos.yml
file under the
selfservice.flows.login.after.oidc.default_browser_return_url
setting. For your frontend application (based on the Ory Kratos Next.js React example), you don't need to handle the
/self-service/methods/oidc/callback/github
endpoint directly. Instead, your application should: 1. Check for an active session: After the redirect, your frontend should check if a session has been created. You can do this using the Ory SDK:
Copy code
typescript    useEffect(() => {      ory        .toSession()        .then(({ data }) => {          setSession(data)          // Redirect to a logged-in page or update UI        })        .catch(() => {          // Handle case where session is not created        })    }, [])
2. Handle the redirect: Your application should be prepared to handle the redirect from Kratos. This typically involves checking for any error parameters in the URL and displaying appropriate messages to the user. 3. Update UI: Once a session is confirmed, update your UI to reflect the logged-in state. If you're experiencing any issues with this flow, you should: 1. Check your Kratos logs for any error messages during the callback processing. 2. Verify that your
kratos.yml
configuration is correct, especially the OIDC provider settings and post-login redirect URLs. 3. Ensure that your frontend application is correctly configured to use the Ory SDK and handle session checks. For more detailed information on implementing these flows, you can refer to the [Login and Registration pages documentation](https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-ory-elements#login-and-registration-pages), which provides examples of how these pages should interact with Ory APIs to handle authentication flows.
b
@chilly-king-10285 but
self-service/methods/oidc/callback/github
endpoint is throwing 404
b
A message from kapa.ai
I apologize for the confusion. If the
/self-service/methods/oidc/callback/github
endpoint is throwing a 404 error, this indicates a misconfiguration in your Ory Kratos setup. Let's troubleshoot this issue step by step: 1. Check your Kratos configuration: Ensure that your
kratos.yml
file correctly configures the GitHub OIDC provider. The configuration should look something like this:
Copy code
yaml    selfservice:      methods:        oidc:          enabled: true          config:            providers:              - id: github                provider: github                client_id: <your-github-client-id>                client_secret: <your-github-client-secret>                mapper_url: file:///etc/config/kratos/github_mapper.jsonnet                scope:                  - user:email
[Source](https://www.ory.sh/docs/kratos/social-signin/github) 2. Verify the callback URL: Make sure the callback URL in your GitHub OAuth App settings matches exactly what Kratos expects. It should be in this format:
Copy code
http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/github
Double-check that there are no typos or mismatches between this URL and what's configured in GitHub. 3. Check Kratos logs: Examine the Kratos logs for any error messages related to the OIDC configuration or callback handling. This might provide more insight into why the endpoint is not being recognized. 4. Verify Kratos version: Ensure you're using a recent version of Ory Kratos. The callback URL structure might have changed in newer versions. 5. Check your reverse proxy configuration: If you're using a reverse proxy (like Nginx), make sure it's correctly forwarding requests to Kratos, including the callback URL. 6. Restart Kratos: After making any configuration changes, restart your Kratos instance to ensure the new settings take effect. 7. Test with curl: Try to access the callback URL directly using curl to see if it's a problem with Kratos or with your frontend application:
Copy code
curl -v http(s)://<domain-of-ory-kratos>:<public-port>/self-service/methods/oidc/callback/github
This should return a 404 only if the endpoint truly doesn't exist. If after checking these points you're still encountering the 404 error, it might be worth reviewing your entire Kratos setup, including network configurations and any intermediary services between your frontend and Kratos. For more detailed troubleshooting steps, you can refer to the [Social sign-in troubleshooting](https://www.ory.sh/docs/troubleshooting/troubleshooting-social-sign-in) documentation, which covers common issues with OIDC integrations, including problems with callback URLs. If the problem persists, you may need to provide more details about your specific setup, including relevant parts of your Kratos configuration and any error messages from the Kratos logs, to diagnose the issue more accurately.
b
@chilly-king-10285 what are different options for hook
Copy code
code:
      hooks:
        - hook: session
b
A message from kapa.ai
Based on the knowledge sources, I can provide you with information about the different options for hooks in Ory Kratos. The
hook
field in your configuration can take several values, each serving a different purpose. According to the [Actions in Ory Identities documentation](https://www.ory.sh/docs/kratos/hooks/configure-hooks#available-actions), there are 4 main actions you can use: 1.
session
- Signs in the user immediately after they create an account. This is only for use with the
after
registration flow. To use it, you must define secrets for secret rotation. 2.
revoke_active_sessions
- Revokes all other active sessions of the user on successful login. This is for use only with the login flow. 3.
require_verified_address
- Allows users to sign in only when they verified their email address. This is for use only with the
after
login flow,
password
method only. 4.
web_hook
- Allows you to trigger external and custom logic. This can be used with all flows and methods except error and logout. It requires providing webhook configuration and is the only action type available for the
after
settings flow. Additionally, from other knowledge sources, we can see examples of other hooks: 5.
show_verification_ui
- Used to show the verification UI after registration, as seen in the [two-step registration discussion](https://github.com/ory/kratos/discussions/3931). Here's an example of how you might configure different hooks:
Copy code
yaml selfservice:   flows:     registration:       after:         password:           hooks:             - hook: session             - hook: show_verification_ui     login:       after:         hooks:           - hook: require_verified_address           - hook: revoke_active_sessions     settings:       after:         password:           hooks:             - hook: revoke_active_sessions
The hooks are executed in the order they are defined in the configuration. For more information on how to configure hooks and their trigger precedence, you can refer to the [Hook Documentation](https://www.ory.sh/docs/kratos/hooks/configure-hooks).