WordPress REST API 인증 플러그인은 WordPress REST API에 대한 무단 액세스로부터 보안을 제공합니다.
검색 결과 :
×이 WordPress REST API 엔드포인트 인증 방법에는 JWT(JSON 웹 토큰) 기반 유효성 검사 시 REST API 액세스가 포함됩니다. WordPress REST API 엔드포인트에 대한 액세스 요청이 이루어질 때마다 해당 JWT 토큰에 대해 인증이 수행됩니다. 해당 JWT 토큰의 확인을 기반으로 해당 API 요청에 대한 리소스에 대한 액세스가 허용됩니다. JWT 토큰은 WordPress 사용자 자격 증명을 기반으로 생성되며 고도로 암호화되므로 보안이 손상되지 않습니다.
WordPress REST API 인증 플러그인은 WordPress REST API에 대한 무단 액세스로부터 보안을 제공합니다.
모바일/웹 애플리케이션이 있고 특정 기능을 가진 사용자만 생성/업데이트 작업을 수행하고 다른 역할을 가진 사용자는 보기만 할 수 있도록 사용자 기능을 기반으로 WordPress REST API 엔드포인트에 대한 액세스를 허용한다고 가정해 보겠습니다. 그런 경우에는 사용자 자격 증명에 따라 얻은 JWT(JSON 웹 토큰)를 사용하여 REST API 엔드포인트를 인증할 수 있으며 WordPress JWT 인증을 사용하면 매우 안전하게 인증할 수 있습니다. 따라서 Authorization 헤더에 전달된 이 JWT를 사용하여 REST API 요청을 하면 리소스/데이터에 대한 액세스가 허용되거나 특정 사용자 기능이 필요한 WordPress 작업을 수행할 수 있는 기능/권한이 제공됩니다. WordPress REST API용 JWT 인증은 HSA 또는 RSA라는 두 가지 방법을 사용하여 토큰 암호화를 제공하며 제한된 시간 동안 유효합니다. 따라서 보안은 문제가 되지 않습니다.
JWT 인증을 위해 생성된 JWT 토큰은 WordPress 사용자 정보로 구성되므로 다른 애플리케이션의 유효한 비밀 키/공개 인증서를 사용하여 이 토큰을 디코딩하여 해당 애플리케이션에서 사용자를 생성하거나 업데이트된 사용자 정보를 동기화할 수 있습니다. JWT 토큰은 시간 기반 토큰이기도 합니다. 즉, 요구 사항에 따라 설정할 수 있는 특정 기간이 지나면 만료되므로 만료 후에는 API에 액세스할 수 없으며 사용자 정보도 디코딩할 수 없습니다. WordPress REST API용 JWT 인증은 보안 인증 방법입니다.
1. JWT 토큰을 얻기 위해 필요한 모든 매개변수를 사용하여 WordPress REST API 요청이 이루어집니다. 획득한 JWT 토큰은 HSA 또는 RSA 알고리즘을 사용하여 암호화된 형식으로 제공되므로 최고의 보안이 유지됩니다.
2. 그런 다음 리소스/데이터에 액세스하거나 WordPress 데이터베이스 작업을 수행하기 위한 실제 WordPress REST API 요청은 마지막 단계에서 얻은 JWT 토큰을 사용하여 이루어지며 토큰 유형이 Bearer인 Authorization 헤더에 전달되며 플러그인은 JWT 토큰의 유효성을 검사하고 유효성 검사 또는 인증이 성공하면 API 요청자에게 리소스가 제공되고 그렇지 않으면 오류 응답이 반환됩니다. 따라서 우리 플러그인은 JWT 토큰 공급자와 JWT 토큰 유효성 검사기 역할을 모두 수행합니다.
관련 사용 사례:
Request:POST https://<domain-name>/wp-json/api/v1/token
Body:username = <wordpress username>
password = <wordpress password>
Sample curl Request Format-
curl -d "username=<wordpress_username>&password=<wordpress_password>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
이 API 엔드포인트라고도 합니다. 사용자 인증 API 또는 WordPress 로그인 API 엔드포인트 따라서 WordPress 사용자 자격 증명을 사용하여 이 끝점에 요청하고 자격 증명이 유효한 경우 JWT 토큰이 포함된 성공적인 응답이 반환되고 그렇지 않으면 그에 따라 오류 응답이 표시됩니다.
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization : Bearer <JWT token>
Sample curl Request Format-
curl -H "Authorization:Bearer <jwt_token >"
-X GET http://<wp_base_url>/wp-json/wp/v2/posts
축하해요! miniOrange WordPress REST API 인증 방법을 사용하여 REST API 호출에 대한 JWT 인증 방법을 성공적으로 구성했습니다.
var client = new RestClient("http://<wp_base_url>/wp-json/wp/v2/posts ");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer < jwt_token >");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder().build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/wp/v2/posts ")
.method("GET", null)
.addHeader = ("Authorization", "Bearer < jwt_token >")
.build();
Response response= client.newCall(request).execute();
var settings = {
"url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
"method": "GET",
"timeout": 0,
"headers": {
"Authorization": "Bearer < jwt_token >"
},
};
$.ajax(settings).done(function (response) {
console.log(response);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array
(
CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/wp/v2/posts%20',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer < jwt_token >'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
conn = http.client.HTTPSConnection("<wp_base_url>")
payload= "
headers = {
'Authorization': 'Bearer < jwt_token >'
}
conn.request("GET", "/wp-json/wp/v2/posts ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
var client = new RestClient("http://<wp_base_url>/wp-json/api/v1/token ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData = true;
request.AddParameter("username", "<wordpress_username>");
request.AddParameter("password", "<wordpress_password>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("username", "<wordpress_username>");
.addFormDataPart("password", "<wordpress_password>");
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/api/v1/token ")
.method("POST", body)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("username", "<wordpress_username>");
form.append("password", "<wordpress_password>");
var settings = {
"url": "http://<wp_base_url>/wp-json/api/v1/token ",
"method": "POST",
"timeout": 0,
"processData": false,
"mimeType": "multipart/form-data",
"contentType": false,
"data": form
};
$.ajax(settings).done(function (response) {
console.log(response);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array
(
CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/api/v1/token%20',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('username' => '<wordpress_username>','password' => '<wordpress_password>'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
import mimetypes
from codecs import encode
conn = http.client.HTTPSConnection("<wp_base_url>")
dataList= []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=username;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<wordpress_username>"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=password;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<wordpress_password>"))
dataList.append(encode('--'+boundary+'--'))
dataList.append(encode(''))
body = b'\r\n'.join(dataList)
payload= body
headers = {
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/wp-json/api/v1/token", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
Postman을 사용하여 REST API 요청을 수행하려면 아래 단계를 따르세요.
1. 역할 기반 REST API 제한 사항:
이 기능을 사용하면 사용자 역할에 따라 REST API 액세스를 제한할 수 있습니다. REST API에 대해 요청된 리소스에 대한 액세스를 허용하려는 역할을 화이트리스트에 추가할 수 있습니다. 따라서 사용자가 REST API를 요청할 때마다 해당 역할을 가져오고 해당 역할이 화이트리스트에 있는 경우에만 리소스에 액세스할 수 있습니다.
그것을 구성하는 방법?
참고 : 역할 기반 제한 기능은 기본 인증(사용자 이름: 비밀번호), JWT 방식, OAuth 2.0(비밀번호 부여)에 유효합니다.
2. 커스텀 헤더
이 기능은 기본 'Authorization' 헤더 대신 사용자 정의 헤더를 선택하는 옵션을 제공합니다.
'사용자 정의 이름'으로 이름이 지정된 헤더가 있으므로 보안이 강화되므로 누군가 헤더를 '인증'으로 사용하여 REST API 요청을 하면 API에 액세스할 수 없습니다.
그것을 구성하는 방법?
3. REST API 제외
이 기능을 사용하면 REST API를 화이트리스트에 추가하여 인증 없이 직접 액세스할 수 있습니다. 따라서 화이트리스트에 등록된 모든 REST API는 공개적으로 사용 가능합니다.
그것을 구성하는 방법?
4. 맞춤형 토큰 만료
이 기능은 시간 기반 토큰을 사용하여 WordPress REST API 엔드포인트를 인증하는 JWT 및 OAuth 2.0 방법에 적용됩니다. 이 기능을 사용하면 토큰이 만료되면 토큰이 더 이상 유효하지 않도록 토큰에 대한 사용자 지정 만료를 설정할 수 있습니다.
그것을 구성하는 방법?
따라서 이 사용자 정의 토큰 만료 기능을 사용하면 보안이 더욱 강화됩니다.
5. JWT 기반 토큰에 대한 서명 검증
이 기능을 사용하면 JWT 토큰에 대한 JWT 서명의 보안 서명이 가능하므로 JWT 토큰이 훨씬 더 안전해지고 서명은 클라이언트 암호/인증서를 통해서만 디코딩될 수 있습니다. 이는 귀하의 서명이 비공개이며 다른 사람이 볼 수 없음을 의미합니다.
우리는 HS2과 RS256이라는 두 가지 서명 알고리즘을 지원합니다. 따라서 위 이미지에 표시된 대로 드롭다운에서 서명 알고리즘을 선택할 수 있습니다.
또한 JWT 서명에 서명하는 데 사용되는 클라이언트 비밀번호 또는 인증서를 추가해야 합니다.
메일을 보내주세요 apisupport@xecurify.com 귀하의 요구 사항에 대한 빠른 안내(이메일/회의를 통해)를 원하시면 저희 팀이 귀하의 요구 사항에 따라 가장 적합한 솔루션/계획을 선택하도록 도와드릴 것입니다.
도움이 필요하다? 우리는 바로 여기에 있습니다!
본 개인 정보 보호 정책은 당사가 개인 정보를 처리하는 방법을 설명하는 미니오렌지 웹사이트에 적용됩니다. 귀하가 웹사이트를 방문하면 해당 웹사이트는 대부분 쿠키 형태로 귀하의 브라우저에 정보를 저장하거나 검색할 수 있습니다. 이 정보는 귀하, 귀하의 기본 설정 또는 귀하의 장치에 관한 것일 수 있으며 대부분 사이트가 귀하가 기대하는 대로 작동하도록 하는 데 사용됩니다. 이 정보는 귀하를 직접적으로 식별하지는 않지만 귀하에게 보다 개인화된 웹 경험을 제공할 수 있습니다. 카테고리 제목을 클릭하면 당사가 쿠키를 처리하는 방법을 확인할 수 있습니다. 당사 솔루션의 개인정보 보호정책은 다음을 참조하세요. 개인 정보 보호 정책.
필수 쿠키는 사이트 탐색, 로그인, 양식 작성 등과 같은 기본 기능을 활성화하여 웹사이트를 완벽하게 사용할 수 있도록 도와줍니다. 해당 기능에 사용되는 쿠키는 개인 식별 정보를 저장하지 않습니다. 그러나 웹사이트의 일부 부분은 쿠키 없이는 제대로 작동하지 않을 수 있습니다.
이러한 쿠키는 방문자, 소스, 페이지 클릭 및 조회수 등을 포함하여 웹사이트 트래픽에 대해 집계된 정보만 수집합니다. 이를 통해 당사는 실행 가능한 요소에 대한 사용자의 상호 작용과 함께 가장 인기 있는 페이지와 가장 인기 없는 페이지에 대해 더 많이 알 수 있으므로 이를 통해 당사는 웹사이트와 서비스의 성능을 개선합니다.