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
에 대해 신경 쓸 필요가 없습니다.
구성 유형
이름 | 유형 | 필수 여부 |
---|---|---|
authorizationEndpoint | string | true |
userInfoEndpoint | string | true |
clientId | string | true |
clientSecret | string | true |
tokenEndpointResponseType | enum | false |
responseType | string | false |
grantType | string | false |
tokenEndpoint | string | false |
scope | string | false |
customConfig | Record<string, string> | false |
profileMap | ProfileMap | false |
ProfileMap 필드 | 유형 | 필수 여부 | 기본 값 |
---|---|---|---|
id | string | false | id |
name | string | false | name |
avatar | string | false | avatar |
string | false | ||
phone | string | false | phone |