providers/workos
WorkOSProfile
扩展
Record
<string
,any
>
属性
connection_id
connection_id: string;
connection_type
connection_type: string;
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: string;
firstName
firstName: string;
id
id: string;
lastName
lastName: string;
picture
picture: string;
默认()
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 提供者。
类型参数
类型参数 |
---|
P extends WorkOSProfile |
参数
参数 | 类型 |
---|---|
options | OAuthUserConfig <P > & { connection : string ; } |
返回值
OAuthConfig
<P
>