跳至内容
从 NextAuth.js v4 迁移?阅读 我们的迁移指南.

providers/workos

内置 WorkOS 集成。

WorkOSProfile

扩展

属性

connection_id

connection_id: string;

connection_type

connection_type: string;

email

email: string;

first_name

first_name: string;

id

id: string;

idp_id

idp_id: string;

last_name

last_name: string;

object

object: string;

organization_id

organization_id: string;

raw_attributes

raw_attributes: {
  email: string;
  firstName: string;
  id: string;
  lastName: string;
  picture: string;
};
email
email: string;
firstName
firstName: string;
id
id: string;
lastName
lastName: string;
picture
picture: string;

默认()

default<P>(options): OAuthConfig<P>

在您的页面中添加 WorkOS 登录。

设置

回调 URL

https://example.com/api/auth/callback/workos

配置

import { Auth } from "@auth/core"
import WorkOS from "@auth/core/providers/workos"
 
const request = new Request(origin)
const response = await Auth(request, {
  providers: [
    WorkOS({
      clientId: WORKOS_CLIENT_ID,
      clientSecret: WORKOS_CLIENT_SECRET,
      issuer: WORKOS_ISSUER,
    }),
  ],
})

资源

笔记

默认情况下,Auth.js 假设 WorkOS 提供者基于 OAuth 2 规范。

WorkOS 本身不是身份提供者,而是连接到多个单点登录 (SSO) 提供者的桥梁。因此,我们需要对使用 WorkOS 认证用户进行一些额外的更改。

为了使用 WorkOS 登录用户,我们需要指定要使用的 WorkOS 连接。一种常见的方法是收集用户的电子邮件地址并提取域。这可以通过自定义登录页面来完成。要添加自定义登录页面,您可以使用 pages 选项

pages: {
  signIn: "/auth/signin",
}

然后,我们可以添加一个自定义登录页面,该页面显示一个输入框,用户可以在其中输入他们的电子邮件地址。然后,我们从用户的电子邮件地址中提取域,并将其传递给 signIn 函数上的 authorizationParams 参数

pages/auth/signin.js
import { useState } from "react"
import { getProviders, signIn } from "next-auth/react"
 
export default function SignIn({ providers }) {
  const [email, setEmail] = useState("")
 
  return (
    <>
      {Object.values(providers).map((provider) => {
        if (provider.id === "workos") {
          return (
            <div key={provider.id}>
              <input
                type="email"
                value={email}
                placeholder="Email"
                onChange={(event) => setEmail(event.target.value)}
              />
              <button
                onClick={() =>
                  signIn(provider.id, undefined, {
                    domain: email.split("@")[1],
                  })
                }
              >
                Sign in with SSO
              </button>
            </div>
          )
        }
 
        return (
          <div key={provider.id}>
            <button onClick={() => signIn(provider.id)}>
              Sign in with {provider.name}
            </button>
          </div>
        )
      })}
    </>
  )
}
 
export async function getServerSideProps(context) {
  const providers = await getProviders()
  return {
    props: { providers },
  }
}
💡

WorkOS 提供者附带一个 默认配置。要覆盖您的用例的默认值,请查看 自定义内置 OAuth 提供者

免责声明 如果您认为您在默认配置中发现了一个错误,您可以 打开一个问题

Auth.js 严格遵守规范,无法对提供者对规范的任何偏差负责。您可以打开一个问题,但是如果问题是与规范不符,我们可能不会寻求解决。您可以在 讨论 中寻求更多帮助。

类型参数

类型参数
P extends WorkOSProfile

参数

参数类型
optionsOAuthUserConfig<P> & { connection: string; }

返回值

OAuthConfig<P>

Auth.js © Balázs Orbán 和团队 -2024