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

SailPoint ISC 提供商

SailPoint Identity Secure Cloud (ISC) 是一个企业级 SaaS 平台,用于身份和安全。要使用此 OAuth 集成,您需要一个 ISC 租户。如果您是 SailPoint 的客户或合作伙伴,请联系您的 SailPoint 账户经理了解更多详细信息。如果您是开发人员,请查看 SailPoint 开发者社区

💡

此提供商未与任何 Auth.js 包一起发布,因为它是一个企业提供商,我们无法获得租户来测试和确保兼容性。也就是说,我们希望将此类提供商提供给我们的用户,因此我们将在此类文档页面上共享提供商的复制和粘贴版本。以下提供的提供商配置按原样提供,并由拥有 SailPoint 租户访问权限的社区成员提交。

资源

设置

回调 URL

https://example.com/api/auth/callback/sailpoint

创建 OAuth 客户端

首先,您需要在 SailPoint 管理控制台中创建一个客户端,以便获取您的 clientIdclientSecret。您可以按照此 指南,或者按照以下主要步骤进行操作。

  1. 创建 OAuth 客户端 (),授权类型为:AUTHORIZATION_TOKENREFRESH_TOKEN
  2. 将重定向 URL 设置为与您的回调 URL 匹配,以匹配上述示例。
  3. 最后,选择范围 sp:scope:all
  4. 单击“创建”,并记下生成的 clientIdclientSecret

环境变量

AUTH_SAILPOINT_ID=
AUTH_SAILPOINT_SECRET=
AUTH_SAILPOINT_BASE_URL=https://{tenant}.identitynow.com
AUTH_SAILPOINT_BASE_API_URL=https://{tenant}.api.identitynow.com

配置

与其他 Auth.js 提供商不同,此提供商无法从包中导入(有关更多详细信息,请参阅此页面顶部的注释)。但是,您可以将以下对象复制并粘贴到您的 providers 数组中以启用此提供商。

/auth.ts
import NextAuth from "next-auth"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [
    {
      id: "sailpoint",
      name: "SailPoint",
      type: "oauth",
      clientId: process.env.AUTH_SAILPOINT_ID!,
      clientSecret: process.env.AUTH_SAILPOINT_SECRET!,
      authorization: {
        url: `${process.env.AUTH_SAILPOINT_BASE_URL!}/oauth/authorize`,
        params: { scope: "sp:scopes:all" },
      },
      token: `${process.env.AUTH_SAILPOINT_BASE_API_URL!}/oauth/token`,
      userinfo: `${process.env.AUTH_SAILPOINT_BASE_API_URL!}/oauth/userinfo`,
      profile(profile) {
        return {
          id: profile.id,
          email: profile.email,
          name: profile.uid,
          image: null,
        }
      },
      style: { brandColor: "#011E69", logo: "sailpoint.svg" },
    },
  ],
})

配置文件

SailPoint userprofile 端点将返回更多字段,但默认情况下 用户表 仅支持 idnameemailimage。因此,如果您想使用以下任何字段,并且您正在使用具有 Auth.js 的数据库适配器,请确保修改您正在使用的适配器和数据库中的 User 表模式。然后,您可以从上面的 profile 回调中另外返回这些字段中的任何一个。

SailPoint userprofile 端点响应中可用的字段包括以下内容。

type SailPointProfile = {
  tenant: string
  id: string
  uid: string
  email: string
  phone: string
  workPhone: string
  firstname: string
  lastname: string
  capabilities: string
  displayName: string
  name: string
}
Auth.js © Balázs Orbán 和团队 -2024