簡體   English   中英

PHP oAuth簽名無效-Apple DEP

[英]PHP oAuth Signature Invalid - Apple DEP

我正在嘗試從Apple的DEP系統獲取我正在使用PHP的MDM Server的auth_session_token。 我是如此親密,但由於某種原因,請繼續從Apple的服務器獲得以下響應:

signature_invalidUnauthorized

從在線研究和嘗試人們對oAuth使用的不同方法,我嘗試了各種不同的方法。 但是令人遺憾的是,關於Apple的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 Portal中添加服務器時,我嘗試使用從Apple獲得的不同秘密和/或令牌進行簽名,嘗試使用由&符號分隔的多個代碼/秘密,將它們翻轉等等,但是...一樣...

經過長時間的測試,嘗試,重新啟動和挫折,我能夠弄清楚這一點。 事實證明,在生成簽名之前,我沒有按字母順序列出參數,因此簽名不匹配。

因此,在生成簽名時,請務必確保參數按字母順序排列!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM