コンテンツへスキップ
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はそれ自体がIDプロバイダーではなく、複数のシングルサインオン(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は仕様に厳密に準拠しており、プロバイダーによる仕様からの逸脱については責任を負いかねます。問題を提起することはできますが、問題が仕様への準拠違反である場合、解決を追求しない可能性があります。ディスカッションでさらにヘルプを求めることができます。

型パラメータ

型パラメータ
PWorkOSProfile を拡張します。

パラメータ

パラメータ
optionsOAuthUserConfig<P> & { connection: string; }

戻り値

OAuthConfig<P>

Auth.js © Balázs Orbán and Team -2024