跳至內容
從 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()

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 擴充 WorkOSProfile

參數

參數類型
optionsOAuthUserConfig<P> & { connection: string; }

回傳

OAuthConfig<P>

Auth.js © Balázs Orbán 及團隊 -2024