2016-12-31 11 views
0

MDM 서버에 대한 Apple의 DEP 시스템에서 auth_session_token을 가져 오려고합니다. PHP로 작업하고 있습니다. 나는 너무 가까이 모르지만, 어떤 이유로 애플의 서버에서 다음과 같은 반응을 얻고 유지 :PHP oAuth 서명이 잘못됨 - Apple DEP

나는 온라인으로 연구를 수행하고 다른 방법 사람들의 OAuth에 대한 사용하고 시도하는 여러 가지의으로 돌리을 시도
signature_invalidUnauthorized 

. 그러나 슬프게도 애플의 DEP 서버 oAuth와 관련하여 특별한 것은 없다.

많은 사람들이 oAuth 클래스를 사용하는 것을 권장하지만 어느 것도 Apple 시스템을 지원하지 않습니다. 따라서 모든 작업을 수동으로 수행해야하는 것처럼 보입니다.

필자의 PHP 코드에서 cURL을 사용하는 접근 방식을 취했습니다.이 기능은 정상적으로 작동하지 않는 것으로 나타났습니다. 서명을 올바르게 얻을 수 없습니다.

function rfc3986_encode($string) { 
    $result = rawurlencode($string); 
    $result = str_replace('%7E', '~', $result); 
    $result = str_replace('=', '%3D', $result); 
    $result = str_replace('+', '%2B', $result); 

    return $result; 
} 

$consumer = "CK_REDACTED"; 
$secret = "CS_REDACTED"; 
$secret2 = "AS_REDACTED"; 
$token = "AT_REDACTED"; 
$sign_method = "HMAC-SHA1"; 
$version = "1.0"; 
$url = "REDACTED"; 
$path = "REDACTED"; 

$timestamp = strtotime('now'); 
$mt = microtime(); 
$rand = mt_rand(); 
$nonce = md5($mt.$rand); 

$post = array(
    'oauth_consumer_key' => rfc3986_encode($consumer), 
    'oauth_token' => rfc3986_encode($token), 
    'oauth_signature_method' => rfc3986_encode($sign_method), 
    'oauth_timestamp' => rfc3986_encode($timestamp), 
    'oauth_nonce' => rfc3986_encode($nonce), 
    'oauth_version' => rfc3986_encode($version) 
); 

$signatureParameters = array(); 
foreach ($post as $parameter => $value) { 
    $signatureParameters[] = rfc3986_encode($parameter) . '=' . rfc3986_encode($value); 
} 

$signatureParameters = implode('&', $signatureParameters); 

$baseString = "GET" 
      ."&".rfc3986_encode($url) 
      ."&".rfc3986_encode($signatureParameters); 

$key = rfc3986_encode($consumer) ."&"; 

$signature = base64_encode(hash_hmac('sha1', $baseString, $key)); 
$RFC3986signature = rfc3986_encode($signature); 

그래서 $ RFC3986signature 내가 보내는 결국 무엇인가 : 다음

내가 서명을 만들려고하고 (이것은 나의 가장 최근의 시도, 그래서 다시 내가 다른 방법의으로 돌리을 시도)하는 방법이다 oauth_signature 매개 변수에 대한 공식 요청에 포함되어 있지만 받아 들여지지는 않습니다.

아무도이 문제를 해결하는 방법을 알고 있습니까? DEP 포털에서 내 서버를 추가하거나 & 기호로 구분 된 여러 코드/비밀을 사용하여 시도한 적이 있거나 주위를 뒤집어 쓴 것처럼 Apple에서 얻은 다양한 비밀 및/또는 토큰으로 서명을 시도했습니다 ... 그러나 똑같은 ...

답변

0

오랜 시간 테스트하고 시도하고 다시 시작하여 좌절감을 느낄 때 나는 이것을 알 수있었습니다. 내 서명으로 밝혀졌습니다. 생성하기 전에 매개 변수가 사전 순으로 나열되지 않았으므로 서명이 일치하지 않았습니다.

서명 키를 생성 할 때 매개 변수가 알파벳순으로되어 있는지 확인하십시오.