types
SvelteKitAuthConfig
SvelteKitAuth メソッドを設定します。
継承元
Omit
<AuthConfig
,"raw"
>
プロパティ
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 環境変数によってデフォルトで暗号化されます。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
params | Object | - |
params.account ? | null | Account | サインインに使用されたプロバイダーに関する情報が含まれています。 TokenSet も含まれています 注 trigger が "signIn" または "signUp" の場合に利用可能 |
params.isNewUser ? | boolean | 非推奨 代わりに trigger === "signUp" を使用してください |
params.profile ? | Profile | プロバイダーから返された OAuth プロファイル。 (OIDC の場合は、デコードされた ID トークンまたは /userinfo レスポンスになります) 注 trigger が "signIn" の場合に利用可能。 |
params.session ? | any | AuthConfig.session strategy: "jwt" を使用する場合、これはデータですuseSession().update メソッドを使用してクライアントから送信されます。⚠ 注意: このデータを使用する前に検証する必要があります。 |
params.token | JWT | trigger が "signIn" または "signUp" の場合、JWT のサブセットになります。name 、email 、image が含まれます。それ以外の場合は、後続の呼び出しで完全な JWT になります。 |
params.trigger ? | "signIn" | "update" | "signUp" | jwt コールバックが呼び出された理由を確認します。考えられる理由は次のとおりです。 - ユーザーサインイン: コールバックが最初に呼び出されたとき、 user 、profile 、account が存在します。- ユーザーサインアップ: AuthConfig.session.strategy が "database" に設定されている場合、ユーザーが初めてデータベースに作成されます。- 更新イベント: useSession().update メソッドによってトリガーされます。後者の場合、 trigger は undefined になります。 |
params.user | User | AdapterUser | OAuthConfig.profile または CredentialsConfig.authorize コールバックの結果のいずれかです。 注 trigger が "signIn" または "signUp" の場合に利用可能。リソース - 資格情報プロバイダー - ユーザーデータベースモデル |
戻り値
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
}
}
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
params | Object | - |
params.baseUrl | string | サイトのデフォルトベースURL(フォールバックとして使用できます) |
params.url | string | クライアントによってコールバックURLとして提供されるURL |
戻り値
Awaitable
<string
>
session()?
optional session: (params) => Awaitable<Session | DefaultSession>;
このコールバックは、セッションがチェックされるたびに呼び出されます(/api/session
エンドポイントの呼び出し時、useSession
またはgetSession
の使用時など)。戻り値はクライアントに公開されるため、ここで何を返すか注意してください! 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
をスローします。
例
callbacks: {
async signIn({ profile }) {
// Only allow sign in for users with email addresses ending with "yourdomain.com"
return profile?.email?.endsWith("@yourdomain.com")
}
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
params | Object | - |
params.account ? | null | Account | - |
params.credentials ? | Record <string , CredentialInput > | Credentialsプロバイダーが使用されている場合、ユーザーの資格情報が含まれます |
params.email ? | Object | Emailプロバイダーが使用されている場合、最初の呼び出しで、次を含みますverificationRequest: true プロパティは、検証リクエストフローでトリガーされていることを示します。ユーザーがサインインリンクをクリックした後にコールバックが呼び出されると、 このプロパティは存在しません。ブロックリストにあるアドレスまたはドメインへのメール送信を回避したり、明示的に生成する場合のみ、 verificationRequest プロパティを確認できます。許可リストにあるメールアドレスの場合のみ、 メールアドレスの場合。 |
params.email.verificationRequest ? | boolean | - |
params.profile ? | Profile | OAuthプロバイダーが使用されている場合、完全な プロバイダーによって返されたOAuthプロファイル。 |
params.user | User | 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>;
パラメータ
パラメータ | 型 |
---|---|
message | Object |
message.user | ユーザー |
戻り値
Awaitable
<void
>
linkAccount()?
optional linkAccount: (message) => Awaitable<void>;
パラメータ
パラメータ | 型 |
---|---|
message | Object |
message.account | アカウント |
message.profile | User | AdapterUser |
message.user | User | AdapterUser |
戻り値
Awaitable
<void
>
session()?
optional session: (message) => Awaitable<void>;
メッセージオブジェクトには、JWTまたはデータベースに永続化されたセッションを使用するかどうかによって、次のいずれかが含まれます
token
: このセッションのJWT。session
: アダプターからのセッションオブジェクト。
パラメータ
パラメータ | 型 |
---|---|
message | Object |
message.session | セッション |
message.token | JWT |
戻り値
Awaitable
<void
>
signIn()?
optional signIn: (message) => Awaitable<void>;
credentials
タイプ認証を使用している場合、ユーザーは資格情報プロバイダーからの生の応答です。他のプロバイダーの場合、アダプターからのユーザーオブジェクト、アカウント、およびユーザーがアダプターに新規であったかどうかを示すインジケーターを取得します。
パラメータ
パラメータ | 型 |
---|---|
message | Object |
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>;
パラメータ
パラメータ | 型 |
---|---|
message | Object |
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)
}
}
})
- ⚠ 設定すると、AuthConfig.debugオプションは無視されます。
デフォルト
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 | - |
U | string |