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

提供商

CredentialInput

重新导出 CredentialInput

CredentialsConfig

重新导出 CredentialsConfig

CredentialsProviderType

重新导出 CredentialsProviderType

EmailConfig

重新导出 EmailConfig

EmailProviderType

重新导出 EmailProviderType

EmailUserConfig

重新导出 EmailUserConfig

AppProvider

在所有 ProviderType 中共享

扩展

属性

callbackUrl

callbackUrl: string;

id

id: string;

在 AuthConfig.providers 中唯一标识提供商,它也是 URL 的一部分

继承自

CommonProviderOptions.id

name

name: string;

默认登录页面登录按钮上使用的提供商名称。例如,如果它为“Google”,则相应的按钮将显示为:“使用 Google 登录”

继承自

CommonProviderOptions.name

signinUrl

signinUrl: string;

type

type: ProviderType;

参见 ProviderType

继承自

CommonProviderOptions.type


CommonProviderOptions

在所有 ProviderType 中共享

扩展自

属性

id

id: string;

在 AuthConfig.providers 中唯一标识提供商,它也是 URL 的一部分

name

name: string;

默认登录页面登录按钮上使用的提供商名称。例如,如果它为“Google”,则相应的按钮将显示为:“使用 Google 登录”

type

type: ProviderType;

参见 ProviderType


OAuth2Config<Profile>

待办:文档

扩展

类型参数

类型参数
Profile

属性

[conformInternal]?

optional [conformInternal]: true;
参见

customFetch?

optional [customFetch]: (input, init?) => Promise<Response>;
参见
参数
参数类型
inputURL | RequestInfo
init?RequestInit
返回

Promise<Response>

account?

optional account: AccountCallback;

接收 OAuth 提供商返回的完整TokenSet,并返回一个子集。它用于创建与数据库中用户关联的帐户。

您需要调整数据库的帐户模型以匹配返回的属性。有关更多信息,请查看数据库适配器的文档。

默认值为:access_token, id_token, refresh_token, expires_at, scope, token_type, session_state

示例
import GitHub from "@auth/core/providers/github"
// ...
GitHub({
  account(account) {
    // https://githubdocs.cn/en/apps/creating-github-apps/authenticating-with-a-github-app/refreshing-user-access-tokens#refreshing-a-user-access-token-with-a-refresh-token
    const refresh_token_expires_at =
      Math.floor(Date.now() / 1000) + Number(account.refresh_token_expires_in)
    return {
      access_token: account.access_token,
      expires_at: account.expires_at,
      refresh_token: account.refresh_token,
      refresh_token_expires_at
    }
  }
})
参见

allowDangerousEmailAccountLinking?

optional allowDangerousEmailAccountLinking: boolean;

通常,当您使用 OAuth 提供商登录并且具有相同电子邮件地址的另一个帐户已存在时,这些帐户不会自动链接。

登录时的自动帐户链接在任意提供商之间并不安全,默认情况下已禁用。在我们的安全常见问题解答中了解更多信息。

但是,如果您相信相关提供商已安全地验证了与帐户关联的电子邮件地址,则可能需要允许自动帐户链接。设置allowDangerousEmailAccountLinking: true以启用自动帐户链接。

authorization?

optional authorization: string | AuthorizationEndpointHandler;

登录过程将通过将用户发送到此 URL 来启动。

授权端点

checks?

optional checks: ("none" | "state" | "pkce")[];

在回调端点上执行的 CSRF 保护。

默认
["pkce"]
注意

redirectProxyUrlAuthConfig.redirectProxyUrl设置时,"state"将自动添加到检查中。

RFC 7636 - OAuth 公共客户端代码交换证明密钥 (PKCE) | RFC 6749 - OAuth 2.0 授权框架 | OpenID Connect Core 1.0 |

client?

optional client: Partial<Client & {
  token_endpoint_auth_method: string;
}>;

将覆盖传递给底层的 OAuth 库。有关详细信息,请参见oauth4webapi 客户端

clientId?

optional clientId: string;

clientSecret?

optional clientSecret: string;

id

id: string;

当您想登录到特定提供商时,标识该提供商。

示例
signIn('github') // "github" is the provider ID
覆盖

CommonProviderOptions.id

issuer?

optional issuer: string;
覆盖

PartialIssuer.issuer

jwks_endpoint

jwks_endpoint: any;
继承自

PartialIssuer.jwks_endpoint

name

name: string;

提供商的名称。显示在默认登录页面上。

覆盖

CommonProviderOptions.name

options?

optional options: OAuthUserConfig<Profile>;

profile?

optional profile: ProfileCallback<Profile>;

接收 OAuth 提供商返回的完整Profile,并返回一个子集。它用于在数据库中创建用户。

默认值为:id, email, name, image

参见

数据库适配器:用户模型

redirectProxyUrl?

optional redirectProxyUrl: string;

style?

optional style: OAuthProviderButtonStyles;

token?

optional token: string | TokenEndpointHandler;

type

type: "oauth";

参见 ProviderType

覆盖

CommonProviderOptions.type

userinfo?

optional userinfo: string | UserinfoEndpointHandler;

wellKnown?

optional wellKnown: string;

符合 OpenID Connect (OIDC) 标准的提供商可以配置此选项而不是authorize/token/userinfo选项,在大多数情况下无需进一步配置。您仍然可以使用authorize/token/userinfo选项进行高级控制。

授权服务器元数据


OAuthProviderButtonStyles

属性

bg?

optional bg: string;
已弃用

请改用 ‘brandColor’

brandColor?

optional brandColor: string;
optional logo: string;

text?

optional text: string;
已弃用

OIDCConfig<Profile>

OAuth2Config 的扩展。

参见

https://openid.net/specs/openid-connect-core-1_0.html

扩展

类型参数

类型参数
Profile

属性

[conformInternal]?

optional [conformInternal]: true;
参见
继承自

Omit.[conformInternal]

customFetch?

optional [customFetch]: (input, init?) => Promise<Response>;
参见
参数
参数类型
inputURL | RequestInfo
init?RequestInit
返回

Promise<Response>

继承自

Omit.[customFetch]

account?

optional account: AccountCallback;

接收 OAuth 提供商返回的完整TokenSet,并返回一个子集。它用于创建与数据库中用户关联的帐户。

您需要调整数据库的帐户模型以匹配返回的属性。有关更多信息,请查看数据库适配器的文档。

默认值为:access_token, id_token, refresh_token, expires_at, scope, token_type, session_state

示例
import GitHub from "@auth/core/providers/github"
// ...
GitHub({
  account(account) {
    // https://githubdocs.cn/en/apps/creating-github-apps/authenticating-with-a-github-app/refreshing-user-access-tokens#refreshing-a-user-access-token-with-a-refresh-token
    const refresh_token_expires_at =
      Math.floor(Date.now() / 1000) + Number(account.refresh_token_expires_in)
    return {
      access_token: account.access_token,
      expires_at: account.expires_at,
      refresh_token: account.refresh_token,
      refresh_token_expires_at
    }
  }
})
参见
继承自

Omit.account

allowDangerousEmailAccountLinking?

optional allowDangerousEmailAccountLinking: boolean;

通常,当您使用 OAuth 提供商登录并且具有相同电子邮件地址的另一个帐户已存在时,这些帐户不会自动链接。

登录时的自动帐户链接在任意提供商之间并不安全,默认情况下已禁用。在我们的安全常见问题解答中了解更多信息。

但是,如果您相信相关提供商已安全地验证了与帐户关联的电子邮件地址,则可能需要允许自动帐户链接。设置allowDangerousEmailAccountLinking: true以启用自动帐户链接。

继承自

Omit.allowDangerousEmailAccountLinking

authorization?

optional authorization: string | AuthorizationEndpointHandler;

登录过程将通过将用户发送到此 URL 来启动。

授权端点

继承自

Omit.authorization

checks?

optional checks: ("none" | "state" | "nonce" | "pkce")[];

client?

optional client: Partial<Client & {
  token_endpoint_auth_method: string;
}>;

将覆盖传递给底层的 OAuth 库。有关详细信息,请参见oauth4webapi 客户端

继承自

Omit.client

clientId?

optional clientId: string;
继承自

Omit.clientId

clientSecret?

optional clientSecret: string;
继承自

Omit.clientSecret

id

id: string;

当您想登录到特定提供商时,标识该提供商。

示例
signIn('github') // "github" is the provider ID
继承自

忽略.id

idToken?

optional idToken: boolean;

如果设置为 false,则将为用户数据获取 userinfo_endpoint

注意

在授权流程期间,仍然需要返回 id_token

issuer?

optional issuer: string;
继承自

忽略.issuer

jwks_endpoint

jwks_endpoint: any;
继承自

忽略.jwks_endpoint

name

name: string;

提供商的名称。显示在默认登录页面上。

继承自

忽略.name

options?

optional options: OAuthUserConfig<Profile>;
继承自

忽略.options

profile?

optional profile: ProfileCallback<Profile>;

接收 OAuth 提供商返回的完整Profile,并返回一个子集。它用于在数据库中创建用户。

默认值为:id, email, name, image

参见

数据库适配器:用户模型

继承自

忽略.profile

redirectProxyUrl?

optional redirectProxyUrl: string;
继承自

忽略.redirectProxyUrl

style?

optional style: OAuthProviderButtonStyles;
继承自

忽略.style

token?

optional token: string | TokenEndpointHandler;
继承自

忽略.token

type

type: "oidc";

userinfo?

optional userinfo: string | UserinfoEndpointHandler;
继承自

忽略.userinfo

wellKnown?

optional wellKnown: string;

符合 OpenID Connect (OIDC) 标准的提供商可以配置此选项而不是authorize/token/userinfo选项,在大多数情况下无需进一步配置。您仍然可以使用authorize/token/userinfo选项进行高级控制。

授权服务器元数据

继承自

忽略.wellKnown


AccountCallback()

type AccountCallback: (tokens) => TokenSet | undefined | void;

参数

参数类型
tokensTokenSet

返回值

TokenSet | undefined | void


AppProviders

type AppProviders: (Provider | ReturnType<BuiltInProviders[keyof BuiltInProviders]>)[];

AuthorizationEndpointHandler

type AuthorizationEndpointHandler: EndpointHandler<AuthorizationParameters>;

BuiltInProviderType

type BuiltInProviderType: RedirectableProviderType | OAuthProviderType | WebAuthnProviderType;

BuiltInProviders

type BuiltInProviders: Record<OAuthProviderType, (config) => OAuthConfig<any>> & Record<CredentialsProviderType, typeof default> & Record<EmailProviderType, typeof default> & Record<WebAuthnProviderType, (config) => WebAuthnConfig>;

OAuthChecks

type OAuthChecks: OpenIDCallbackChecks | OAuthCallbackChecks;

OAuthConfig<Profile>

type OAuthConfig<Profile>: OIDCConfig<Profile> | OAuth2Config<Profile>;

类型参数

类型参数
Profile

OAuthEndpointType

type OAuthEndpointType: "authorization" | "token" | "userinfo";

OAuthProviderType

type OAuthProviderType: 
  | "42-school"
  | "apple"
  | "asgardeo"
  | "atlassian"
  | "auth0"
  | "authentik"
  | "azure-ad-b2c"
  | "azure-ad"
  | "azure-devops"
  | "bankid-no"
  | "battlenet"
  | "beyondidentity"
  | "box"
  | "boxyhq-saml"
  | "bungie"
  | "click-up"
  | "cognito"
  | "coinbase"
  | "concept2"
  | "descope"
  | "discord"
  | "dribbble"
  | "dropbox"
  | "duende-identity-server6"
  | "eventbrite"
  | "eveonline"
  | "facebook"
  | "faceit"
  | "forwardemail"
  | "foursquare"
  | "freshbooks"
  | "fusionauth"
  | "github"
  | "gitlab"
  | "google"
  | "hubspot"
  | "identity-server4"
  | "instagram"
  | "kakao"
  | "keycloak"
  | "kinde"
  | "line"
  | "linkedin"
  | "mailchimp"
  | "mailgun"
  | "mailru"
  | "mastodon"
  | "mattermost"
  | "medium"
  | "microsoft-entra-id"
  | "naver"
  | "netlify"
  | "netsuite"
  | "nextcloud"
  | "nodemailer"
  | "notion"
  | "okta"
  | "onelogin"
  | "ory-hydra"
  | "osso"
  | "osu"
  | "passage"
  | "passkey"
  | "patreon"
  | "ping-id"
  | "pinterest"
  | "pipedrive"
  | "postmark"
  | "reddit"
  | "resend"
  | "roblox"
  | "salesforce"
  | "sendgrid"
  | "simplelogin"
  | "slack"
  | "spotify"
  | "strava"
  | "threads"
  | "tiktok"
  | "todoist"
  | "trakt"
  | "twitch"
  | "twitter"
  | "united-effects"
  | "vipps"
  | "vk"
  | "webauthn"
  | "webex"
  | "wechat"
  | "wikimedia"
  | "wordpress"
  | "workos"
  | "yandex"
  | "zitadel"
  | "zoho"
  | "zoom";

OAuthUserConfig<Profile>

type OAuthUserConfig<Profile>: Omit<Partial<OAuthConfig<Profile>>, "options" | "type">;

类型参数

类型参数
Profile

OIDCConfigInternal<Profile>

type OIDCConfigInternal<Profile>: OAuthConfigInternal<Profile> & {
  checks: OIDCConfig<Profile>["checks"];
  idToken: OIDCConfig<Profile>["idToken"];
};

类型声明

checks

checks: OIDCConfig<Profile>["checks"];

idToken

idToken: OIDCConfig<Profile>["idToken"];

类型参数

类型参数
Profile

OIDCUserConfig<Profile>

type OIDCUserConfig<Profile>: Omit<Partial<OIDCConfig<Profile>>, "options" | "type">;

类型参数

类型参数
Profile

ProfileCallback()<Profile>

type ProfileCallback<Profile>: (profile, tokens) => Awaitable<User>;

类型参数

类型参数
Profile

参数

参数类型
profileProfile
tokensTokenSet

返回值

Awaitable<User>


Provider<P>

type Provider<P>: 
  | OIDCConfig<P>
  | OAuth2Config<P>
  | EmailConfig
  | CredentialsConfig
  | WebAuthnConfig & InternalProviderOptions | (...args) => 
  | OAuth2Config<P>
  | OIDCConfig<P>
  | EmailConfig
  | CredentialsConfig
  | WebAuthnConfig & InternalProviderOptions & InternalProviderOptions;

必须是支持的身份验证提供程序配置

  • OAuthConfig
  • EmailConfigInternal
  • CredentialsConfigInternal

有关更多信息,请参阅指南

参见

类型参数

类型参数
P 扩展 Profile任何

ProviderType

type ProviderType: 
  | "oidc"
  | "oauth"
  | "email"
  | "credentials"
  | WebAuthnProviderType;

传递给 Auth.js 的提供程序必须定义这些类型之一。

参见


RedirectableProviderType

type RedirectableProviderType: "email" | "credentials";

TokenEndpointHandler

type TokenEndpointHandler: EndpointHandler<UrlParams, {
  checks: OAuthChecks;
  params: CallbackParamsType;
  }, {
  tokens: TokenSet;
}>;

UserinfoEndpointHandler

type UserinfoEndpointHandler: EndpointHandler<UrlParams, {
  tokens: TokenSet;
}, Profile>;
Auth.js © Balázs Orbán 和团队 -2024