워드프레스에 대한 권한 부여를 위한 통합
Logto를 워드프레스와 통합하는 시리즈의 두 번째 부분으로, 권한 부여에 초점을 맞춥니다.
이전 기사에서는 워드프레스에서 Logto를 인증에 통합하는 방법에 대해 논의했습니다. 이 글은 두 번째 부분으로, 권한부여 과정에 대해 자세히 살펴보며, 워드프레스의 역할 시스템에 초점을 맞추고 Logto에서 역할 매핑을 구현하는 방법을 설명할 것입니다. 이전 기사에서 사용했던 플러그인이 권한 부여 기능을 직접 제공하지 않았기 때문입니다.
우리는 Logto RBAC (Role-Based Access Control)에서 제공하는 사용자의 역할에 기초하여 자동으로 워드프레스 역할을 사용자에게 할당하는 역할 매핑 함수를 생성할 것입니다.
워드프레스 사용자 역할 이해
워드프레스에는 사용자가 사이트에서 수행할 수 있는 작업 (기능)을 정의하는 내장된 사용자 역할 관리 시스템이 있습니다. 기본 사용자 역할에는 관리자, 에디터, 작성자, 공헌자, 구독자 등이 있으며, 각각이 고유한 기능 세트를 가지고 있습니다.
이러한 역할은 사이트 운영의 보안과 효율성을 유지하는 데 중요하며, 사용자가 책임에 따른 적절한 액세스 수준을 가지도록 도와줍니다.
해결책: 맞춤 역할 매핑
Logto는 "범위"를 허가의 가장 작은 단위로 사용하여 RBAC (Role-Based Access Control)를 권한 모델로 사용합니다. 이 범위는 인증된 사용자가 애플리케이션 내에서 수행할 수 있는 특정 작업을 정의합니다. 그러나, 워드프레스는 사용자 권한을 관리하기 위해 다른 원칙에 기반을 두고 있습니다. 이는 여러 기능을 묶는 사전 정의된 "역할"에 의존합니다.
이 근본적인 차이를 감안할 때, 워드프레스에서 정의한 역할과 일치하는 Logto 내에 특별한 역할을 생성하는 것을 제안합니다. 이러한 역할은 범위를 가지지 않을 수 있으며, 사용자를 워드프레스 역할에 매핑하는 참조로만 사용됩니다.
사전 요구 사항
계속하기 전에 다음을 확인하세요:
- 워드프레스와 통합하기 위해 Logto를 사용한 이전 기사를 완료했어야 합니다. 이에는 다음이 포함됩니다.
- 관리자 권한이 있는 워드프레스 사이트.
- 워드프레스 사이트에 대한 설정이 완료된 Logto 계정.
- 워드프레스 사이트에 설치된 OpenID Connect Generic plugin.
- 워드프레스의 역할에 대응하는 Logto에 역할을 설정합니다. 예를 들어 워드프레스에 '에디터' 역할이 있다면, Logto에 'group:editors' 역할을 생성하세요.
맞춤 코드로 역할 매핑 구현
역할 매핑을 구현하려면, 워드프레스 테마의 functions.php
파일에 맞춤 코드를 추가할 것입니다. 이 involves 'wp_login' action hook을 사용하는 것, 사용자가 로그인할 때 트리거됩니다. 다음은 이를 어떻게 설정하는지에 대한 단계별 가이드입니다.
1단계: 테마의 functions.php에 접근하기
테마의 functions.php
파일을 엽니다. 워드프레스 관리자 패널을 통해 이 파일에 접근할 수 있습니다. 외관 > 테마 편집기로 이동하고 오른쪽 파일 목록에서 functions.php
를 선택합니다. 또는 소스 코드에서 워드프레스 테마 디렉토리로 이동하여 functions.php
파일을 찾습니다. 이 파일을 사용하면 워드프레스 사이트의 기능을 확장하는 맞춤 PHP 기능을 추가할 수 있습니다.
단계 2: 역할 매핑 기능 작성
다음은 functions.php에 추가할 수 있는 기능의 간단한 예입니다. 이 기능은 사용자 로그인 시 트리거되며, 사용자의 roles
claim을 Logto에서 가져와 역할을 할당합니다.
단계 3: 코드 이해 및 재구성
-
logto_handler
기능: 이 기능에는 두 가지 매개변수가 있습니다:$user_login
(사용자명) 및$user
(사용자 객체). Logto에서 역할을 검색하여 사용자 메타정보로 저장하는openid-connect-generic-last-user-claim
로부터 사용자 정의 변수를 검색하고, 이 역할을 대응하는 워드프레스 역할에 매핑하고, 사용자에게 이를 할당합니다. -
add_action
: 이 줄은logto_handler
함수를wp_login
액션에 훅을 걸어 사용자가 로그인한 후 트리거됩니다. '10'은 우선순위 (기본값) 를 나타내며, '2'는 함수가 허용하는 인수의 수를 나타냅니다.
위의 예제는 'group:editors'라는 역할명으로 Logto를 통해 인증된 사용자에게 '에디터' 역할을 할당합니다. 그러나 실제 시나리오에서는 더 많은 종류의 역할 매핑을 구현해야 할 가능성이 큽니다.
워드프레스 역할 및 기능 목록은 여기서 확인할 수 있습니다.
4단계: 설정 테스트
이제 Logto에 'group:editors' 역할을 가진 사용자로 로그인하여 역할 매핑 기능을 테스트해봅시다. 로그인 후 워드프레스 사용자의 역할을 확인하여 매핑이 올바르게 작동하는지 확인합니다.
결론
워드프레스와 Logto를 모두 인증 및 승인에 통합함으로써 사이트의 보안 및 기능을 향상시킬 수 있습니다. 여기에서 제공된 코드는 기본적인 예제이며, 워드프레스 사이트의 역할 및 권한 구조에 맞게 이를 조정해야 할 수 있습니다.