WP REST API를 사용하여 OAuth 인증을 설정하고 사용하는 방법

게시 됨: 2016-11-30
워드프레스 나머지 API 설정
@Cloudways 팔로우

WordPress REST API와 관련하여 OAuth는 가장 일반적인 인증 처리 공급자입니다.

OAuth 인증이 설정되면 사용자는 먼저 웹 사이트에서 사용 중인 WordPress 로그인 양식을 통해 로그인합니다. 그러나 이 로그인은 클라이언트가 대신 요청을 처리할 수 있는 권한도 부여하며 모든 후속 요청은 OAuth 토큰을 통해 검증됩니다. 이러한 토큰은 모든 API 액세스 요청을 관리하는 데에도 사용됩니다. 이 액세스는 언제든지 취소될 수 있습니다.

아마도 OAuth 인증 프로세스의 가장 중요한 용도는 사용자의 자격 증명을 노출하지 않고 REST API 요청을 처리하는 안전한 프로세스일 것입니다. 이는 자격 증명이 자주 교환되는 프로덕션 서버의 경우 특히 중요합니다. 이러한 시나리오에서 OAuth 인증은 빈번한 로그인 자격 증명 요청을 처리하기 위한 안전한 절차를 제공하는 데 사용됩니다.

  • 기존 인증과 OAuth 인증 비교
  • OAuth 인증 워크플로
  • OAuth 인증 설치
  • OAuth API의 가용성 평가
  • 애플리케이션 생성 및 관리
  • OAuth 자격 증명을 생성하는 클라이언트 CLI
  • OAuth 자격 증명을 생성하는 HTTP 클라이언트
  • 임시 자격증 취득
  • 사용자 인증
  • 토큰 교환
  • 테스트 인증 요청 보내기

기존 인증과 OAuth 인증 비교

OAuth 인증의 중요성을 이해하려면 기존 인증 모델과 OAuth 인증 모델을 이해하는 것이 중요합니다.

기존 인증 모델에는 두 가지 핵심 엔터티가 있습니다. 클라이언트 및 리소스/서비스 제공자. 클라이언트는 웹 앱, 서비스 또는 사용자일 수 있지만 리소스/서비스 공급자는 액세스가 제한된 환경에서 원하는 리소스 또는 서비스를 가지고 있습니다.

클라이언트가 특정 리소스를 필요로 하는 경우 적절한 자격 증명을 제공하여 리소스 공급자와 함께 자신을 인증합니다. 이것은 간단한 프로세스이지만 보안 침해의 큰 위험도 있습니다.

대조적으로, OAuth 인증 모델은 3개의 엔티티로 약간 더 복잡합니다. 사용자를 대신하는 클라이언트, 리소스에 대한 액세스가 필요한 사용자, 리소스를 유지 관리하는 서버입니다.

3개의 엔터티가 있으므로 이 프로세스를 3-legged 인증이라고 합니다. 그러나 클라이언트와 사용자가 동일한 개체인 경우 인증 프로세스는 양방향 인증이 됩니다.

OAuth 인증 워크플로

작업 흐름

  • 클라이언트서버 에 액세스하기 위해 사용자 권한을 요청합니다.
  • 사용자 가 요청을 승인하면 클라이언트 는 계속 진행할 수 있는 권한을 받습니다.
  • 클라이언트는 정체성과는 A의 uthorization 서버 (API)에 대한 클라이언트로부터 위임을 제시하고 토큰을 요청합니다.
  • ID와 권한이 성공적으로 검증되면 API( Authorization Server )가 클라이언트에 대한 액세스 토큰을 발급합니다. 이 때 인증이 완료됩니다.
  • 다음으로 클라이언트 는 특정 리소스를 요청하기 위해 서버 에 접근합니다. 이 시점에서 클라이언트 는 또한 액세스 토큰을
  • 액세스 토큰이 검증되면 서버 는 요청된 리소스에 대한 액세스 권한을 부여합니다.

클라이언트는 요청 토큰에 대한 서명된 요청을 시작합니다. 이 요청은 임시 자격 증명이라고도 합니다. 요청은 관련 엔드포인트 URI로 전송됩니다. 이 요청은 몇 가지 중요한 매개변수로 구성됩니다.

  • oauth_consumer_key : 이 키는 요청을 시작한 애플리케이션을 식별합니다.
  • oauth_timestamp : 서버는 nonce 저장을 최적화하기 위해 이 타임스탬프를 사용합니다.
  • oauth_nonce : 모든 개별 요청에 대해 고유한 애플리케이션 생성 토큰입니다.
  • oauth_signature : API 요청의 이 중요한 부분은 요청의 모든 구성 요소와 일부 OAuth 값의 해시입니다.
  • oauth_signature_method : OAuth 플러그인은 단일 서명 방법인 HMAC-SHA1을 제공합니다.
  • oath_callback : 권한 부여 후 사용자가 리디렉션되는 URL입니다. 요청이 확인되고 다음 매개변수가 포함된 요청 토큰이 발행됩니다.
  • oauth_token : Authorization Server의 응답에서 제거된 애플리케이션 토큰입니다. 그런 다음 이 토큰은 API 서버로 전송됩니다.
  • oauth_token_secret : 사용자 비밀번호와 유사합니다. 그런 다음 클라이언트가 요청을 승인합니다. 이를 위해 요청 URI가 생성되고 oauth_token 이 서버 권한 부여 엔드포인트 URI에 추가됩니다. 사용자는 적절한 자격 증명을 제공하여 이 요청을 보내는 것을 승인합니다.

첫 번째 단계에서 oauth_callback URI를 사용할 수 있는 경우 서버는 쿼리 문자열에 다음 매개변수를 추가하여 URI로 리디렉션합니다.

  • oauth_token : 이미 토큰이 있습니다.
  • oauth_verifier : 리소스 소유자의 신원을 클라이언트에 확인합니다.

첫 번째 단계에서 oauth_callback URI가 제공되지 않은 경우 서버는 리소스 소유자가 클라이언트에 수동으로 알릴 수 있도록 oauth_verifier 값을 보냅니다.

oauth_verfier 를 수신 후 클라이언트는 토큰 자격 증명을 서버에 요청합니다. 이는 토큰 요청 엔드포인트 URI에 대한 요청 형식을 취합니다. 이 요청에는 다음 매개변수가 포함됩니다.

  • oauth_token
  • oauth_verfier
  • oauth_consumer_key
  • oauth_signature
  • oauth_signature_method
  • oauth_nonce
  • oauth_version

OAuth 인증 설치

WordPress의 컨텍스트에서 OAuth 인증은 WordPress용 OAuth 인증 API를 설치하여 구현됩니다. 이것은 OAuth 1.0a 사양을 기반으로 하며 실제로 이러한 사양을 추가 매개변수 wp_scope로 확장합니다. 이 매개변수는 임시 자격 증명 요청 엔드포인트로 전송됩니다.

플러그인은 WP REST API 팀의 Github에서 사용할 수 있습니다. 현재 버전 4.4 이상이 지원됩니다.

/wp-content/plugins/ 디렉토리로 이동하여 플러그인 복제 프로세스를 시작합니다.

 자식 복제 https://github.com/WP-API/OAuth1.git 

힘내 설치

다운로드가 완료되면 WordPress CLI를 통해 플러그인을 활성화합니다.

 wp 플러그인은 OAuth1을 활성화합니다.

WordPress CLI를 사용하지 않으려면 WordPress 관리 >> 플러그인으로 이동하여 메뉴에서 플러그인을 활성화할 수 있습니다. 또는 WP CLI를 사용하지 않으려면 브라우저를 WordPress 관리 플러그인 섹션으로 이동하여 활성화할 수도 있습니다.

OAuth API의 가용성 평가

OAuth 핸드셰이크를 시작하기 전에 먼저 서버에서 API가 활성화되어 있는지 확인합니다. 이것은 간단한 GET 요청을 보내어 수행됩니다. /wp-json/ endpoint를 찾은 다음 서버에서 보낸 응답을 분석합니다.

 GET http://Server-Dev/wp-json/

그러면 다음과 같이 JSON 응답이 반환됩니다.

인증으로

여기서 초점은 인증 속성 값의 oauth1 값입니다. 이 개체에는 다음 속성이 정의되어 있습니다.

  • request : 임시 자격 증명 요청 끝점
  • Authorize : 리소스 소유자 권한 부여 끝점
  • access : 토큰 요청 엔드포인트
  • version : 사용 중인 OAuth의 버전

사이트에 대해 OAuth API가 활성화되어 있지 않으면 서버 응답에 빈 인증 속성 값이 포함됩니다.

인증 없이

애플리케이션 생성 및 관리

첫 번째 단계는 OAuth1.0 플러그인이 올바르게 설치되고 활성화되었는지 확인하는 것입니다.

다음으로 WordPress 관리자 >> 사용자 >> 응용 프로그램으로 이동하여 응용 프로그램을 만들고 관리할 수 있습니다.

신청서를 사용

등록된 응용 프로그램 페이지에서 새로 추가 버튼을 클릭하고 다음 세 필드를 작성하여 새 응용 프로그램을 등록합니다.

  1. 클라이언트 이름: 승인된 애플리케이션 섹션 및 승인 프로세스 중에 나타나는 클라이언트의 이름입니다.
  2. 설명 : 클라이언트에 대한 선택적 설명입니다.
  3. 콜백 URL : 콜백 URL은 임시 자격 증명을 생성할 때 사용됩니다.

클라이언트 저장 버튼을 클릭하여 생성되면 클라이언트 키클라이언트 암호 매개변수가 이 특정 클라이언트에 대한 페이지 하단에 나타납니다.

선서 자격

이제 다음 명령을 실행하여 클라이언트의 리포지토리를 복제하겠습니다.

 자식 복제 https://github.com/WP-API/client-cli 

클라이언트 CLI

이제 복제된 디렉터리로 이동하고 Composer를 사용하여 패키지 종속성을 설치합니다.

 cd 클라이언트-cli
작곡가 설치

모든 것이 잘 진행되면 명령줄에 다음과 유사한 내용이 표시되어야 합니다.

작곡가 설치

OAuth 자격 증명을 생성하는 클라이언트 CLI

OAuth 권한 부여 프로세스를 시작하려면 먼저 서버에서 다음 매개변수를 가져옵니다.

  • oauth_consumer_key
  • oauth_consumer_secret

이것은 터미널을 통해 생성되고 다음 WordPress CLI 명령을 실행합니다.

 wp oauth1 추가

비밀oauth_consumer_key입니다. oauth_consumer_secret 각각.

이제 클라이언트를 WordPress 사이트에 연결해야 합니다. 클라이언트에서 client-cli 디렉토리(이전에 복제됨)로 이동하고 다음 명령을 실행합니다.

 wp --require=client.php api oauth1 connect http://Server-Dev/ --key=<여기에 키> --secret=<여기에 비밀>

위 명령에서 URL, 키 및 암호를 바꿉니다. 출력은 다음과 같아야 합니다.

 wp --require=client.php api oauth1 connect http://your-server/wordpress-api/ --key=<귀하의 키> --secret=<비밀번호>
브라우저에서 열기: http://your-server/wordpress-api/oauth1/authorize?oauth_token=<your-token>
인증 코드를 입력하세요:

서버에서 제공한 URL로 이동하고 인증 버튼을 클릭하여 인증 합니다.

WP REST API 연결

다음 화면에서 확인 토큰(또는 oauth_verifier)이 표시됩니다.

토큰 인증

Verifier를 복사하여 터미널에 붙여넣습니다. 기본적으로 각각 oauth_tokenoauth_token_secret인 KeySecret 이 제공됩니다.

OAuth 자격 증명을 생성하는 HTTP 클라이언트

OAuth 1.0a 서버 플러그인은 표준 three-legged 흐름을 따르기 때문에 OAuth 자격 증명 생성에는 다음 단계가 포함됩니다.

  • 임시 자격 증명 취득
  • 사용자 권한
  • 토큰 교환

임시 자격증 취득

임시 자격 증명을 얻기 위해 /oauth1/request 엔드포인트에 POST 요청을 보냅니다. 서버가 자체적으로 경로를 대체할 수 있으므로 이 끝점은 자동 검색 가능해야 합니다.

POST 요청은 애플리케이션에 대한 소비자를 등록할 때 획득한 oauth_consumer_secret 매개변수를 포함해야 합니다. 요청에는 oauth_callback 매개변수도 포함될 수 있으며 이 콜백 URL은 애플리케이션을 등록할 때 제공된 콜백 URL의 체계, 호스트, 포트 및 경로와 일치해야 합니다.

oauth_consumer_keyoauth_consumer_secret 매개변수 외에도 요청에는 oauth_signatureoauth_signature_method 매개변수도 포함되어야 합니다.

Postman을 사용하면 oauth_signature 가 자동으로 생성됩니다. oauth_signature_method 매개변수만 언급하면 ​​됩니다. 현재 OAuth 서버 플러그인은 HMAC-SHA1 서명 방식만 지원합니다.

이제 임시 토큰 자격 증명 끝점에 POST 요청을 보내도록 Postman을 구성하겠습니다. 그런 다음 Authorization 탭의 드롭다운에서 OAuth 1.0 옵션을 선택합니다. 소비자 키소비자 암호 필드에 소비자가 제공한 값을 입력합니다. 마지막으로 서명 방법 옵션이 HMAC-SHA1 로 설정되어 있는지 확인합니다.

사용자 인증

사용자 권한 부여 단계의 경우 브라우저에서 리소스 소유자 권한 부여 엔드포인트를 열고 oauth_token을 전달합니다. 및 이전 단계에서 쿼리 매개변수로 얻은 oauth_token_secret :

 http://server-dev/oauth1/authorize?oauth_token=<token_here>&oauth_token_secret=<secret_here> 

연결 승인

승인 버튼을 클릭하여 애플리케이션을 승인 합니다. 다음 화면에는 인증 토큰이 표시됩니다. 이 토큰은 이제 다음 단계에서 oauth_verifier 토큰으로 작동합니다.

사용자가 클라이언트를 승인하면 애플리케이션이 사용자 > 프로필 페이지의 승인된 애플리케이션 섹션 아래에 나타납니다.

토큰 교환

Authorization 탭에서 OAuth 1.0 옵션을 다시 사용하여 Consumer KeyConsumer Secret 필드를 소비자 가 제공한 값으로 채웁니다. 토큰토큰 암호 필드에 oauth_tokenoauth_token_secret 매개변수 값(임시 자격 증명)을 삽입합니다.

URL의 매개변수를 쿼리 매개변수로 전달할 수도 있으므로 다음과 같이 oauth_verifier 매개변수를 URL에 추가합니다.

 http://server-dev/oauth1/access?oauth_verifier=<oauth_verifier_value>

모든 매개변수가 준비된 상태에서 보내기 버튼을 클릭하여 요청을 보냅니다 . 모든 것이 잘 진행되면 서버는 oauth_token 및 o auth_token_secret 매개변수를 포함하는 응답 본문과 함께 200 – OK 상태 코드를 반환합니다.

 oauth_token=<oauth_token_value>&oauth_token_secret=<oauth_secret_value>

이때 이전에 획득한 임시 토큰은 폐기되어 더 이상 사용할 수 없습니다.

새로운 oauth_tokenoauth_token_secret 매개변수는 인증된 요청을 생성하기 위해 클라이언트에서 사용할 수 있는 OAuth 자격 증명입니다.

테스트 인증 요청 보내기

이제 토큰 자격 증명이 있으므로 Postman을 사용하여 서버에 테스트 요청을 보냅니다. 요청에는 다음 매개변수가 필요합니다.

시작하기 전에 다음이 필요합니다.

  • oauth_consumer_key
  • oauth_consumer_secret
  • oauth_token
  • oauth_token_secret

Postman의 Authorization 탭 아래 드롭다운에서 OAuth 1.0 을 선택합니다.

권한 부여

모든 필드를 채우면 업데이트 요청 버튼을 클릭합니다. 쿼리 문자열에 추가하는 대신 요청 헤더에 매개변수를 보내려면 헤더에 매개변수 추가 옵션을 선택하십시오.

요청이 성공하면 서버는 200 – OK 상태 코드를 보냅니다.

마무리!

이 튜토리얼에서는 서버에서 WordPress용 OAuth 인증 API를 설정하는 방법과 토큰 자격 증명을 얻기 위해 HTTP 클라이언트를 사용하는 방법에 대해 설명했습니다. 코드에서 문제를 발견하거나 토론에 추가하려면 아래에 의견을 남겨주세요.