본문으로 건너뛰기

OAuth 2.0 프로토콜로 소셜 로그인을 설정하세요

OAuth 2.0 프로토콜에 대한 공식 Logto 커넥터입니다.

팁:

이 가이드는 Logto 커넥터에 대한 기본적인 이해를 전제로 합니다. 익숙하지 않은 분들은 커넥터 가이드를 참조하여 시작하세요.

시작하기​

OAuth 커넥터는 OAuth 2.0 프로토콜을 지원하는 임의의 소셜 아이덴티티 제공자 (IdP)와 Logto의 연결을 가능하게 합니다.

노트:

OAuth 커넥터는 Logto에서 특별한 종류의 커넥터로, 몇 가지 OAuth 프로토콜 기반 커넥터를 추가할 수 있습니다.

OAuth 앱 생성​

이 페이지를 열었을 때, 이미 연결하고자 하는 소셜 아이덴티티 제공자를 알고 있다고 믿습니다. 첫 번째로 해야 할 일은 아이덴티티 제공자가 OAuth 프로토콜을 지원하는지 확인하는 것입니다. 이는 유효한 커넥터를 구성하기 위한 전제 조건입니다. 그런 다음, 아이덴티티 제공자의 지침에 따라 OAuth 인가를 위한 관련 앱을 등록하고 생성하세요.

커넥터 구성​

보안상의 이유로 "Authorization Code" 그랜트 타입만 지원하며, 이는 Logto의 시나리오에 완벽하게 맞습니다.

clientId와 clientSecret은 OAuth 앱의 세부 정보 페이지에서 찾을 수 있습니다.

clientId: 클라이언트 ID는 인가 서버와의 등록 중에 클라이언트 애플리케이션을 식별하는 고유 식별자입니다. 이 ID는 인가 서버가 클라이언트 애플리케이션의 아이덴티티를 확인하고, 특정 클라이언트 애플리케이션과 관련된 모든 인가된 액세스 토큰을 연결하는 데 사용됩니다.

clientSecret: 클라이언트 시크릿은 등록 중에 인가 서버에 의해 클라이언트 애플리케이션에 발급되는 기밀 키입니다. 클라이언트 애플리케이션은 액세스 토큰을 요청할 때 인가 서버에 자신을 인증하기 위해 이 시크릿 키를 사용합니다. 클라이언트 시크릿은 기밀 정보로 간주되며 항상 안전하게 보관되어야 합니다.

tokenEndpointAuthMethod: 토큰 엔드포인트 인증 방법은 클라이언트 애플리케이션이 액세스 토큰을 요청할 때 인가 서버에 자신을 인증하는 데 사용됩니다. 지원되는 방법을 확인하려면 OAuth 2.0 서비스 제공자의 OpenID Connect 디스커버리 엔드포인트에서 사용할 수 있는 token_endpoint_auth_methods_supported 필드를 참조하거나 OAuth 2.0 서비스 제공자가 제공하는 관련 문서를 참조하세요.

clientSecretJwtSigningAlgorithm (선택 사항): tokenEndpointAuthMethod가 client_secret_jwt일 때만 필요합니다. 클라이언트 시크릿 JWT 서명 알고리즘은 토큰 요청 중에 인가 서버에 전송되는 JWT를 클라이언트 애플리케이션이 서명하는 데 사용됩니다.

scope: 스코프 매개변수는 클라이언트 애플리케이션이 접근을 요청하는 리소스와 권한의 집합을 지정하는 데 사용됩니다. 스코프 매개변수는 일반적으로 특정 권한을 나타내는 값의 공백으로 구분된 목록으로 정의됩니다. 예를 들어, "read write"라는 스코프 값은 클라이언트 애플리케이션이 사용자의 데이터에 대한 읽기 및 쓰기 접근을 요청하고 있음을 나타낼 수 있습니다.

소셜 벤더의 문서에서 authorizationEndpoint, tokenEndpoint 및 userInfoEndpoint를 찾을 수 있습니다.

authenticationEndpoint: 이 엔드포인트는 인증 과정을 시작하는 데 사용됩니다. 인증 과정은 일반적으로 사용자가 로그인하고 클라이언트 애플리케이션이 자신의 리소스에 접근할 수 있도록 인가를 부여하는 것을 포함합니다.

tokenEndpoint: 이 엔드포인트는 클라이언트 애플리케이션이 요청된 리소스에 접근할 수 있는 액세스 토큰을 얻는 데 사용됩니다. 클라이언트 애플리케이션은 일반적으로 그랜트 타입과 인가 코드를 포함한 요청을 토큰 엔드포인트에 보내 액세스 토큰을 받습니다.

userInfoEndpoint: 이 엔드포인트는 클라이언트 애플리케이션이 사용자의 전체 이름, 이메일 주소 또는 프로필 사진과 같은 추가 정보를 얻는 데 사용됩니다. 사용자 정보 엔드포인트는 일반적으로 클라이언트 애플리케이션이 토큰 엔드포인트에서 액세스 토큰을 얻은 후에 접근됩니다.

Logto는 또한 사용자가 일반적으로 표준이 아닌 소셜 벤더의 프로필에서 매핑을 사용자 정의할 수 있는 profileMap 필드를 제공합니다. 키는 Logto의 표준 사용자 프로필 필드 이름이며, 해당 값은 소셜 프로필의 필드 이름이어야 합니다. 현재 단계에서는 Logto가 소셜 프로필에서 'id', 'name', 'avatar', 'email' 및 'phone'에만 관심을 가지며, 'id'만 필수 필드이고 나머지는 선택 사항입니다.

responseType과 grantType은 인가 코드 그랜트 타입과 함께 고정된 값만 사용할 수 있으므로 선택 사항이며 기본 값이 자동으로 채워집니다.

예를 들어, Google 사용자 프로필 응답을 찾을 수 있으며, 따라서 profileMap은 다음과 같아야 합니다:

{
"id": "sub",
"avatar": "picture"
}
노트:

사용자 정의 매개변수를 넣기 위한 선택적 customConfig 키를 제공했습니다. 각 소셜 아이덴티티 제공자는 OAuth 표준 프로토콜에 대한 자체 변형을 가질 수 있습니다. 원하는 소셜 아이덴티티 제공자가 OAuth 표준 프로토콜을 엄격히 준수한다면, customConfig에 대해 신경 쓸 필요가 없습니다.

구성 유형​

이름유형필수 여부
authorizationEndpointstringtrue
userInfoEndpointstringtrue
clientIdstringtrue
clientSecretstringtrue
tokenEndpointResponseTypeenumfalse
responseTypestringfalse
grantTypestringfalse
tokenEndpointstringfalse
scopestringfalse
customConfigRecord<string, string>false
profileMapProfileMapfalse
ProfileMap 필드유형필수 여부기본 값
idstringfalseid
namestringfalsename
avatarstringfalseavatar
emailstringfalseemail
phonestringfalsephone

참고 자료​

OAuth 2.0 인가 프레임워크