사이트 간 스크립팅 문제
도메인간에 WP 인증 쿠키를 전송할 수 없습니다. 또한 프로그래밍 방식으로 다른 WP 설치에 로그인하기 위해 일반 텍스트 비밀번호를 저장하지 않으려 고합니다. 따라서 사용자가 WordPress에 로그인 한 다음 타사 사이트에서 API 엔드 포인트를 통해 로그인 상태에 액세스해야합니다. 이렇게하면 WordPress가 모든 인증을 처리 할 수 있습니다. API 엔드 포인트가 제 3 자에게 데이터를 제공하기 위해 사용자가 물리적으로 WP 측에 로그인해야하므로 매우 안전합니다.
API 엔드 포인트 생성
내가 방금 작성한이 기사를 확인하십시오 : http://coderrr.com/create-an-api-endpoint-in-wordpress/
또한 여기에서 코드 데모를 볼 수 있습니다 : https://gist.github.com/2982319
자신의 앱 요구에 맞는 논리를 파악해야하지만,이를 통해 WordPress 측에서 원하는 것을 제공 할 수있는 엔드 포인트를 만들 수 있습니다.
인증 사이트로 WordPress를 사용하고 있으므로 is_user_logged_in ()과 같은 검사를 사용할 수 있습니다. 로그인 한 경우 필요한 정보를 포함하여 사용자 개체를 타사에 반환하십시오.
타사에서 로그인
제 3 자로부터 redirect_to 쿼리 변수를 사용하여 원활한 경험을 위해 로그인 페이지에 연결할 수 있습니다. 로그인하면 타사 사이트로 다시 전달됩니다.
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
원격 로그인
타사 사이트에서 WordPress에 사용자를 로그인해야하는 경우이 사이트에 나와있는 간단한 WP 기능을 사용할 수 있습니다. http://kuttler.eu/code/log-in-a-wordpress-user-programmatically/
보안을 유지하려면 공유 비밀을 사용하고 해당 비밀에서 시간 기반 해시를 만들어야합니다. 기본적으로 다음과 같습니다.
타사는 타임 스탬프 및 공유 암호로 생성 된 토큰과 함께 요청을 보냅니다.
$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);
워드 프레스 설치가 요청을받습니다.
$shared_secret = 'foobar';
$timestamp = esc_attr($_GET['timestamp']);
if((time() - $timestamp) > 30) # Threshold is 30 seconds
//do something here - TOKEN expired!
$token = md5($share_secret.$timestamp);
$token_to_check = esc_attr($_GET);
if($token == $token_to_check)
//authenticated!