コンテンツにスキップ
NextAuth.js v4 からの移行ですか? 移行ガイド.

types

SvelteKitAuthConfig

SvelteKitAuth メソッドを設定します。

継承元

プロパティ

adapter?

optional adapter: Adapter;

adapter オプションを使用して、データベースアダプターを渡すことができます。

継承元

Omit.adapter

basePath?

optional basePath: string;

Auth.js API エンドポイントのベースパス。

デフォルト
"/api/auth" in "next-auth"; "/auth" with all other frameworks
継承元

Omit.basePath

callbacks?

optional callbacks: {
  jwt: (params) => Awaitable<null | JWT>;
  redirect: (params) => Awaitable<string>;
  session: (params) => Awaitable<Session | DefaultSession>;
  signIn: (params) => Awaitable<string | boolean>;
};

コールバックは、アクションが実行されたときに何が起こるかを制御するために使用できる非同期関数です。コールバックは特に、JSON Web トークンを含むシナリオでは非常に強力で、データベースなしでアクセス制御を実装し、外部データベースや API と統合することができます。

jwt()?
optional jwt: (params) => Awaitable<null | JWT>;

このコールバックは、JSON Web トークンが作成されたとき (つまり、サインイン時) または更新されたとき (つまり、クライアントでセッションにアクセスするたび) に呼び出されます。ここで返すものはすべて JWT に保存され、セッションコールバックに転送されます。そこで、クライアントに返すものを制御できます。それ以外は、フロントエンドから保持されます。JWT は、AUTH_SECRET 環境変数によってデフォルトで暗号化されます。

session コールバック

パラメータ
パラメータ説明
paramsObject-
params.account?null | Accountサインインに使用されたプロバイダーに関する情報が含まれています。
TokenSet も含まれています


trigger"signIn" または "signUp" の場合に利用可能
params.isNewUser?boolean非推奨
代わりに trigger === "signUp" を使用してください
params.profile?Profileプロバイダーから返された OAuth プロファイル。
(OIDC の場合は、デコードされた ID トークンまたは /userinfo レスポンスになります)


trigger"signIn" の場合に利用可能。
params.session?anyAuthConfig.session strategy: "jwt" を使用する場合、これはデータです
useSession().update メソッドを使用してクライアントから送信されます。

⚠ 注意: このデータを使用する前に検証する必要があります。
params.tokenJWTtrigger"signIn" または "signUp" の場合、JWT のサブセットになります。
nameemailimage が含まれます。

それ以外の場合は、後続の呼び出しで完全な JWT になります。
params.trigger?"signIn" | "update" | "signUp"jwt コールバックが呼び出された理由を確認します。考えられる理由は次のとおりです。
- ユーザーサインイン: コールバックが最初に呼び出されたとき、userprofileaccount が存在します。
- ユーザーサインアップ: AuthConfig.session.strategy が "database" に設定されている場合、ユーザーが初めてデータベースに作成されます。
- 更新イベント: useSession().update メソッドによってトリガーされます。
後者の場合、triggerundefined になります。
params.userUser | AdapterUserOAuthConfig.profile または CredentialsConfig.authorize コールバックの結果のいずれかです。


trigger"signIn" または "signUp" の場合に利用可能。

リソース
- 資格情報プロバイダー
- ユーザーデータベースモデル
戻り値

Awaitable<null | JWT>

redirect()?
optional redirect: (params) => Awaitable<string>;

このコールバックは、ユーザーがコールバック URL にリダイレクトされるたびに(サインインまたはサインアウト時など)呼び出されます。デフォルトでは、オリジンと同じホスト上の URL のみが許可されます。このコールバックを使用して、その動作をカスタマイズできます。

ドキュメント

callbacks: {
  async redirect({ url, baseUrl }) {
    // Allows relative callback URLs
    if (url.startsWith("/")) return `${baseUrl}${url}`
 
    // Allows callback URLs on the same origin
    if (new URL(url).origin === baseUrl) return url
 
    return baseUrl
  }
}
パラメータ
パラメータ説明
paramsObject-
params.baseUrlstringサイトのデフォルトベースURL(フォールバックとして使用できます)
params.urlstringクライアントによってコールバックURLとして提供されるURL
戻り値

Awaitable<string>

session()?
optional session: (params) => Awaitable<Session | DefaultSession>;

このコールバックは、セッションがチェックされるたびに呼び出されます(/api/sessionエンドポイントの呼び出し時、useSessionまたはgetSessionの使用時など)。戻り値はクライアントに公開されるため、ここで何を返すか注意してください! JWTコールバックを介してトークンに追加したものをクライアントで使用可能にしたい場合は、ここでも明示的に返す必要があります。

⚠ デフォルトでは、セキュリティを強化するために、トークンのサブセット(メール、名前、画像)のみが返されます。

トークン引数はJWTセッション戦略を使用している場合にのみ使用でき、ユーザー引数はデータベースセッション戦略を使用している場合にのみ使用できます。

jwt コールバック

callbacks: {
  async session({ session, token, user }) {
    // Send properties to the client, like an access_token from a provider.
    session.accessToken = token.accessToken
 
    return session
  }
}
パラメータ
パラメータ
params{ session: { user: AdapterUser; } & AdapterSession; user: AdapterUser; } & { session: Session; token: JWT; } & { newSession: any; trigger: "update"; }
戻り値

Awaitable<Session | DefaultSession>

signIn()?
optional signIn: (params) => Awaitable<string | boolean>;

ユーザーのサインインを許可するかどうかを制御します。trueを返すと、サインインフローが続行されます。falseを返すか、エラーをスローすると、サインインフローが停止し、ユーザーはエラーページにリダイレクトされます。文字列を返すと、ユーザーは指定されたURLにリダイレクトされます。

未処理のエラーは、元のエラーに設定されたメッセージでAccessDeniedをスローします。

AccessDenied

callbacks: {
 async signIn({ profile }) {
  // Only allow sign in for users with email addresses ending with "yourdomain.com"
  return profile?.email?.endsWith("@yourdomain.com")
}
パラメータ
パラメータ説明
paramsObject-
params.account?null | Account-
params.credentials?Record<string, CredentialInput>Credentialsプロバイダーが使用されている場合、ユーザーの資格情報が含まれます
params.email?ObjectEmailプロバイダーが使用されている場合、最初の呼び出しで、次を含みます
verificationRequest: trueプロパティは、検証リクエストフローでトリガーされていることを示します。
ユーザーがサインインリンクをクリックした後にコールバックが呼び出されると、
このプロパティは存在しません。ブロックリストにあるアドレスまたはドメインへのメール送信を回避したり、明示的に生成する場合のみ、verificationRequestプロパティを確認できます。
許可リストにあるメールアドレスの場合のみ、
メールアドレスの場合。
params.email.verificationRequest?boolean-
params.profile?ProfileOAuthプロバイダーが使用されている場合、完全な
プロバイダーによって返されたOAuthプロファイル。
params.userUser | AdapterUser-
戻り値

Awaitable<string | boolean>

継承元

Omit.callbacks

cookies?

optional cookies: Partial<CookiesOptions>;

Auth.jsで使用される任意のクッキーのデフォルトのクッキー名とオプションをオーバーライドできます。カスタムプロパティを持つ1つ以上のクッキーを指定でき、欠落しているオプションはAuth.jsによって定義されたデフォルト値を使用します。この機能を使用する場合、組み込みの動的ポリシーからオプトアウトするため、開発ビルドと本番ビルドで異なるクッキーポリシーを設定するための条件付き動作を作成する必要がある可能性があります。

  • これは高度なオプションです。高度なオプションは、基本的なオプションと同じ方法で渡されますが、複雑な意味や副作用がある場合があります。非常に使い慣れていない限り、高度なオプションの使用は避けるべきです。
デフォルト
{}
継承元

Omit.cookies

debug?

optional debug: boolean;

認証とデータベース操作のデバッグメッセージを有効にするには、debugをtrueに設定します。

  • ⚠ カスタムのAuthConfig.loggerを追加した場合、この設定は無視されます。
デフォルト
false
継承元

Omit.debug

events?

optional events: {
  createUser: (message) => Awaitable<void>;
  linkAccount: (message) => Awaitable<void>;
  session: (message) => Awaitable<void>;
  signIn: (message) => Awaitable<void>;
  signOut: (message) => Awaitable<void>;
  updateUser: (message) => Awaitable<void>;
};

イベントは応答を返さない非同期関数であり、監査ログに役立ちます。デバッグまたは監査ログの作成など、以下のいずれかのイベントのハンドラーを指定できます。メッセージオブジェクトの内容はフロー(OAuthまたはEmail認証フロー、JWTまたはデータベースセッションなど)によって異なりますが、通常はユーザーオブジェクトやJSON Webトークンの内容、およびイベントに関連するその他の情報が含まれます。

デフォルト
{}
createUser()?
optional createUser: (message) => Awaitable<void>;
パラメータ
パラメータ
messageObject
message.userユーザー
戻り値

Awaitable<void>

linkAccount()?
optional linkAccount: (message) => Awaitable<void>;
パラメータ
パラメータ
messageObject
message.accountアカウント
message.profileUser | AdapterUser
message.userUser | AdapterUser
戻り値

Awaitable<void>

session()?
optional session: (message) => Awaitable<void>;

メッセージオブジェクトには、JWTまたはデータベースに永続化されたセッションを使用するかどうかによって、次のいずれかが含まれます

  • token: このセッションのJWT。
  • session: アダプターからのセッションオブジェクト。
パラメータ
パラメータ
messageObject
message.sessionセッション
message.tokenJWT
戻り値

Awaitable<void>

signIn()?
optional signIn: (message) => Awaitable<void>;

credentialsタイプ認証を使用している場合、ユーザーは資格情報プロバイダーからの生の応答です。他のプロバイダーの場合、アダプターからのユーザーオブジェクト、アカウント、およびユーザーがアダプターに新規であったかどうかを示すインジケーターを取得します。

パラメータ
パラメータ
messageObject
message.account?null | Account
message.isNewUser?boolean
message.profile?Profile
message.userユーザー
戻り値

Awaitable<void>

signOut()?
optional signOut: (message) => Awaitable<void>;

メッセージオブジェクトには、JWTまたはデータベースに永続化されたセッションを使用するかどうかによって、次のいずれかが含まれます

  • token: このセッションのJWT。
  • session: 終了するアダプターからのセッションオブジェクト。
パラメータ
パラメータ
message{ session: undefined | null | void | AdapterSession; } | { token: null | JWT; }
戻り値

Awaitable<void>

updateUser()?
optional updateUser: (message) => Awaitable<void>;
パラメータ
パラメータ
messageObject
message.userユーザー
戻り値

Awaitable<void>

継承元

Omit.events

experimental?

optional experimental: {
  enableWebAuthn: boolean;
};

このオプションを使用して、試験的な機能を有効にします。有効にすると、コンソールに警告メッセージが出力されます。

注釈

実験的な機能は、安定性が保証されておらず、予告なく変更または削除される可能性があります。注意して使用してください。

デフォルト
{}
enableWebAuthn?
optional enableWebAuthn: boolean;

WebAuthnサポートを有効にします。

デフォルト
false
継承元

Omit.experimental

jwt?

optional jwt: Partial<JWTOptions>;

AuthConfig.adapterを指定していない場合、JSON Web Tokenはデフォルトで有効になります。JSON Web Tokenはデフォルトで暗号化(JWE)されます。この動作を維持することをお勧めします。

継承元

Omit.jwt

logger?

optional logger: Partial<LoggerInstance>;

ロガーレベルを上書きし(undefinedレベルは組み込みロガーを使用します)、NextAuthのログをインターセプトします。このオプションを使用して、NextAuthログをサードパーティのログサービスに送信できます。

// /auth.ts
import log from "logging-service"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  logger: {
    error(code, ...message) {
      log.error(code, message)
    },
    warn(code, ...message) {
      log.warn(code, message)
    },
    debug(code, ...message) {
      log.debug(code, message)
    }
  }
})
デフォルト
console
継承元

Omit.logger

pages?

optional pages: Partial<PagesOptions>;

カスタムサインイン、サインアウト、およびエラーページを作成する場合は、使用するURLを指定します。指定されたページは、対応する組み込みページを上書きします。

デフォルト
{}
  pages: {
    signIn: '/auth/signin',
    signOut: '/auth/signout',
    error: '/auth/error',
    verifyRequest: '/auth/verify-request',
    newUser: '/auth/new-user'
  }
継承元

Omit.pages

providers

providers: Provider[];

サインイン用の認証プロバイダー(例:Google、Facebook、Twitter、GitHub、Emailなど)のリストを任意の順序で示します。これは、組み込みのプロバイダーのいずれか、またはカスタムプロバイダーを含むオブジェクトにすることができます。

デフォルト
[]
継承元

Omit.providers

redirectProxyUrl?

optional redirectProxyUrl: string;

設定すると、OAuthサインインフロー中に、認証リクエストのredirect_uriはこの値に基づいて設定されます。

これは、OAuthプロバイダーが単一のredirect_uriのみをサポートしている場合、または事前に最終的なデプロイURLが不明な(Vercelのような)プレビューURLでOAuthを使用したい場合に便利です。

URLには、Auth.jsが初期化される場所までの完全なパスを含める必要があります。

注釈

これにより、プロバイダーでstate OAuth2Config.checksが自動的に有効になります。

"https://authjs.example.com/api/auth"

プロバイダーごとに個別に上書きすることもできます。

GitHub({
  ...
  redirectProxyUrl: "https://github.example.com/api/auth"
})
デフォルト

AUTH_REDIRECT_PROXY_URL環境変数

参考資料:ガイド:プレビューデプロイメントの保護

継承元

Omit.redirectProxyUrl

secret?

optional secret: string | string[];

トークンをハッシュ化し、クッキーに署名し、暗号キーを生成するために使用されるランダムな文字列。

ランダムな文字列を生成するには、Auth.js CLIを使用できます:npx auth secret

注釈

シークレットの配列を渡すこともできます。その場合、JWTの復号に成功した最初のシークレットが使用されます。これは、既存のセッションを無効にすることなくシークレットをローテーションするのに役立ちます。新しいセッションすべてに使用される新しいシークレットは、配列の先頭に追加する必要があります。

継承元

Omit.secret

session?

optional session: {
  generateSessionToken: () => string;
  maxAge: number;
  strategy: "jwt" | "database";
  updateAge: number;
};

JWTまたはデータベースを使用したい場合、アイドルセッションが期限切れになるまでの時間、またはデータベースを使用している場合に書き込み操作を調整するなど、セッションを構成します。

generateSessionToken()?
optional generateSessionToken: () => string;

データベースベースのセッション用にカスタムセッショントークンを生成します。デフォルトでは、Node.jsのバージョンに応じて、ランダムなUUIDまたは文字列が生成されます。ただし、使用する独自のカスタム文字列(CUIDなど)を指定できます。

デフォルト

Node.jsのバージョンに応じてrandomUUIDまたはrandomBytes.toHex

戻り値

string

maxAge?
optional maxAge: number;

セッションが期限切れになるまでの、現在からの相対時間(秒単位)

デフォルト
2592000 // 30 days
strategy?
optional strategy: "jwt" | "database";

ユーザーセッションを保存する方法を選択します。デフォルトは、セッションクッキー内の暗号化されたJWT(JWE)である"jwt"です。

ただし、adapterを使用する場合は、代わりにデフォルトで"database"になります。"jwt"を明示的に定義することで、JWTセッションを強制的に有効にすることもできます。

"database"を使用する場合、セッションクッキーには、データベース内のセッションを検索するために使用されるsessionToken値のみが含まれます。

ドキュメント | Adapter | JSON Web Tokenについて

updateAge?
optional updateAge: number;

セッションを更新する頻度(秒単位)。0に設定すると、セッションは毎回更新されます。

デフォルト
86400 // 1 day
継承元

Omit.session

skipCSRFCheck?

optional skipCSRFCheck: typeof skipCSRFCheck;
継承元

Omit.skipCSRFCheck

theme?

optional theme: Theme;

組み込みのAuthConfig.pagesのテーマを変更します。

継承元

Omit.theme

trustHost?

optional trustHost: boolean;

Auth.jsは、正常に機能するために、受信リクエストのhostヘッダーに依存します。このため、このプロパティをtrueに設定する必要があります。

デプロイプラットフォームがhostヘッダーを安全に設定することを確認してください。

公式のAuth.jsベースのライブラリは、hostヘッダーを安全に設定することがわかっている一部のデプロイプラットフォーム(例:Vercel)に対して、この値を自動的に設定しようとします。

継承元

Omit.trustHost

useSecureCookies?

optional useSecureCookies: boolean;

trueに設定すると、NextAuth.jsによって設定されたすべてのクッキーは、HTTPS URLからのみアクセス可能になります。このオプションは、開発者の便宜のために、http://(例:http://localhost:3000)で始まるURLではデフォルトでfalseになります。このセキュリティ機能を無効にして、保護されていないURLからクッキーにアクセスできるようにするには、このオプションをfalseに手動で設定できます(これは推奨されません)。

  • これは高度なオプションです。高度なオプションは、基本的なオプションと同じ方法で渡されますが、複雑な意味や副作用がある場合があります。非常に使い慣れていない限り、高度なオプションの使用は避けるべきです。

デフォルトは、HTTPサイトではfalse、HTTPSサイトではtrueです。

継承元

Omit.useSecureCookies


LiteralUnion<T, U>

type LiteralUnion<T, U>: T | U & Record<never, never>;

型パラメータ

型パラメータ
T extends U-
Ustring
Auth.js © Balázs Orbán and Team -2024