API 리소스
API 리소스, 즉 리소스 지표는 요청할 대상 서비스 또는 리소스를 나타내며, 일반적으로 리소스의 아이덴티티를 나타내는 URI 형식의 변수입니다. 이는 Logto 인가 시스템의 핵심 개념으로, 인가 정책이 보호하도록 설계된 엔드포인트를 정의합니다.
리소스 지표
- 리소스 값은 접근이 요청되는 대상 서비스 또는 리소스를 나타냅니다.
- 그 값은 반드시 절대 URI여야 합니다.
- URI는 절대로 프래그먼트 컴포넌트를 포함해서는 안 됩니다.
- 쿼리 컴포넌트를 포함해서는 안 됩니다.
- 전체 API 또는 접근하려는 리소스 집합에 대해 가장 구체적인 URI를 제공해야 합니다.
실제로, 클라이언트는 상호작용할 애플리케이션 또는 리소스의 기본 URI를 알 수 있습니다. 이를 리소스 매개변수의 값으로 사용하는 것이 적절합니다.
예: Logto Management API 기본 URI.
https://tenantId.logto.app/api
기본적으로, 이 API 리소스는 Logto 서비스에 사전 등록되어 있습니다. 이 URI 아래의 모든 Management API는 Logto에 의해 보호됩니다.
Logto API 리소스 스키마
속성 이름 | 속성 설명 | 필수 |
---|---|---|
API 이름 | API 리소스를 식별하는 데 도움이 되는 사용자 친화적인 이름입니다. | true |
API 식별자 | 위에 나열된 제한 사항이 있는 고유한 API 리소스 지표 값입니다. | |
Logto는 이를 사용하여 요청된 API 리소스를 식별하고 인가 토큰을 적절히 부여합니다. | true | |
토큰 만료 시간 (초 단위) | 액세스 토큰 에 설정된 만료 시간입니다. 기본 만료 값은 3600입니다. | false |
기본 API | 테넌트당 0개 또는 1개의 기본 API만 설정할 수 있습니다. | |
기본 API가 지정되면, 인증 요청에서 리소스 매개변수를 생략할 수 있습니다. 이후의 토큰 교환은 기본적으로 해당 API를 대상으로 하여 JWT가 발급됩니다. | false |
만료된 액세스 토큰
이 있는 요청은 제한되어야 합니다. 이는 남용된 토큰으로부터 API를 보호하기 위해 구현되었습니다. 더 큰 값이 설정될수록 발급된 액세스 토큰
이 더 오래 지속되며, API는 더 취약해질 수 있습니다.
기본 API
이 기능은 주로 OIDC 리소스 지표를 지원하지 않는 애플리케이션, 예를 들어 ChatGPT 플러그인에 사용됩니다.
Logto는 RFC 8707: OAuth 2.0을 위한 리소스 지표를 활용하여 역할 기반 접근 제어 (RBAC)를 구현합니다. 이는 OAuth 2.0의 기능 중 하나이지만, 아직 널리 지원되지는 않습니다.
Logto의 구현에서는 모든 사용자 정의 권한 (스코프)이 API 리소스와 연관되어야 합니다. 그렇지 않으면 OpenID Connect (또는 OAuth) 권한으로 처리됩니다. 일반적으로 이는 인가 과정에 영향을 미치지 않습니다. 그러나 RFC 8707을 지원하지 않는 타사 앱과 통합할 때 (예: ChatGPT 플러그인), 초기 인가 요청에 resource
매개변수가 포함되지 않을 수 있어 문제가 발생할 수 있습니다. 결과적으로 Logto는 항상 불투명 액세스 토큰을 발급합니다.
이 문제를 해결하기 위해, 테넌트 수준의 기본 리소스로 API 리소스를 지정할 수 있습니다. 이렇게 하면:
- 인증 요청에
resource
매개변수가 없을 때 Logto는 기본 API 리소스를 사용합니다. openid
스코프가 포함된 경우, 이후 토큰 요청에resource
매개변수가 없을 때 Userinfo 엔드포인트에 대한 불투명 액세스 토큰이 발급됩니다.openid
스코프가 포함되지 않은 경우, 이후 토큰 요청에resource
매개변수가 없을 때 기본 API 리소스에 대한 JWT 액세스 토큰이 발급됩니다.
기본 API 리소스를 지정함으로써 RFC 8707 지원이 부족한 앱과의 원활한 통합을 보장하면서 적절한 접근 제어를 유지할 수 있습니다.
Logto에 API 리소스 등록하기
Logto에서 대상 제한 액세스 토큰
을 얻으려면 먼저 백엔드 API를 등록하여 Logto의 대상 제한 액세스 토큰을 활성화해야 합니다. 인가 요청이 수신되면, Logto는 등록된 API 리소스를 식별하고 적절히 접근을 부여합니다.
API를 등록하려면 콘솔 > API 리소스로 이동하세요. API 식별자가 https://[your-tenant-id].logto.app/api
로 표시된 내장 리소스를 볼 수 있습니다. 이 리소스는 Logto의 모든 Management API를 포함하며, Logto의 인가된 사용자만 접근할 수 있도록 보호합니다.
API 리소스 생성 버튼을 클릭하고 대화형 양식을 따라 자신의 API 리소스를 생성하세요:
- 이 엔티티를 식별하는 데 도움이 될 수 있는 사람이 읽을 수 있는 API 이름.
- URI 형식의 고유한 API 식별자. 이는 API 리소스의 아이덴티티를 나타냅니다.
새로운 API는 생성되면 목록에 표시됩니다. 엔티티를 클릭하여 API 세부 정보 페이지에서 관리하거나 삭제할 수 있습니다.