SailPoint ISC Provider
SailPoint Identity Secure Cloud(ISC)는 기업용 SaaS 플랫폼으로, 아이덴티티와 보안을 담당합니다. 이 OAuth 통합을 사용하려면 ISC 테넌트가 필요합니다. SailPoint 고객이나 파트너라면 SailPoint 계정 관리자에게 문의해 자세한 내용을 확인하세요. 개발자라면 SailPoint 개발자 커뮤니티를 방문해 보세요.
이 프로바이더는 Auth.js 패키지에 포함되어 있지 않습니다. 이는 기업용 프로바이더로, 테스트와 호환성 확인을 위한 테넌트를 확보할 수 없기 때문입니다. 그렇지만, 이러한 프로바이더를 사용자들에게 제공하고자 하므로, 이와 같은 문서 페이지에 복사하여 붙여넣을 수 있는 버전을 공유합니다. 아래의 프로바이더 설정은 그대로 제공되며, SailPoint 테넌트에 접근할 수 있는 커뮤니티 멤버가 제출한 것입니다.
리소스
설정
콜백 URL
https://example.com/api/auth/callback/sailpoint
OAuth 클라이언트 생성
먼저, clientId
와 clientSecret
을 얻기 위해 SailPoint 관리 콘솔에서 클라이언트를 생성해야 합니다. 이 가이드를 따라하거나, 아래 주요 단계를 참고할 수 있습니다.
- OAuth 클라이언트를 생성하고, grant 타입으로
AUTHORIZATION_TOKEN
과REFRESH_TOKEN
을 선택합니다. - 위 예제에 기반한 콜백 URL과 일치하도록 리디렉션 URL을 설정합니다.
- 마지막으로,
sp:scope:all
스코프를 선택합니다. - “생성”을 클릭하고 생성된
clientId
와clientSecret
을 기록해 둡니다.
환경 변수
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
배열에 붙여넣으면 이 프로바이더를 활성화할 수 있습니다.
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
엔드포인트는 더 많은 필드를 반환하지만, 기본적으로 User 테이블은 id
, name
, email
, image
만 지원합니다. 따라서 아래 나열된 필드 중 하나를 사용하고 싶고, 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
}