import { CardList } from "docs-ui"

export const metadata = {
  title: `Auth Providers`,
}

# {metadata.title}

In this document, you’ll learn how the Auth Module handles authentication using providers.

## What's an Auth Module Provider?

An auth module provider handles authenticating customers and users, either using custom logic or by integrating a third-party service.

For example, the EmailPass Auth Module Provider authenticates a user using their email and password, whereas the Google Auth Module Provider authenticates users using their Google account.

### Auth Providers List

<CardList
  items={[
    {
      title: "Emailpass",
      href: "/commerce-modules/auth/auth-providers/emailpass"
    },
    {
      title: "Google",
      href: "/commerce-modules/auth/auth-providers/google"
    },
    {
      title: "GitHub",
      href: "/commerce-modules/auth/auth-providers/github"
    },
  ]}
/>

---

## Configure Allowed Auth Providers of Actor Types

By default, users of all actor types can authenticate with all installed auth module providers.

To restrict the auth providers used for actor types, use the [authMethodsPerActor option](!docs!/learn/configurations/medusa-config#httpauthMethodsPerActor) in Medusa's configurations:

```ts title="medusa-config.ts"
module.exports = defineConfig({
  projectConfig: {
    http: {
      authMethodsPerActor: {
        user: ["google"],
        customer: ["emailpass"],
      },
      // ...
    },
    // ...
  },
})
```

<Note title="Important">

When you specify the `authMethodsPerActor` configuration, it overrides the default. So, if you don't specify any providers for an actor type, users of that actor type can't authenticate with any provider.

</Note>

---

## How to Create an Auth Module Provider

Refer to [this guide](/references/auth/provider) to learn how to create an auth module provider.
