DeviceCheck:无法验证授权令牌
Posted
技术标签:
【中文标题】DeviceCheck:无法验证授权令牌【英文标题】:DeviceCheck: Unable to verify authorization token 【发布时间】:2018-10-31 23:21:09 【问题描述】:我正在尝试让 DeviceCheck 工作,我不断收到来自 Apple 服务器的此响应:401 Unable to verify authorization token
。
device_token
正在通过 JSON 有效负载中的 base64 编码字符串发送到我的 python 服务器。有什么想法我可能做错了吗?
这是我的代码示例:
def device_check_query(device_token):
data =
'device_token': device_token,
'transaction_id': str(uuid4()),
'timestamp': int(time.time() * 1000),
jw_token = get_jw_token()
headers = 'Authorization': 'Bearer ' + jw_token
response = requests.post(QUERY_URL, json=data, headers=headers)
return response.content
def get_jw_token():
with open(KEY_FILE, 'r') as cert_file:
certificate = cert_file.read()
jw_token = jwt.encode(
'iss': TEAM_ID, certificate,
algorithm='ES256',
headers='kid': KEY_ID)
return jw_token
【问题讨论】:
我原来的问题在这里forums.developer.apple.com/message/312475#312475 你有没有想过这个问题? 【参考方案1】:您需要在有效负载中添加颁发者密钥和 iat 然后它才能工作,请检查下面的代码
import time
def device_check_query(device_token):
data =
'device_token': device_token,
'transaction_id': str(uuid.uuid4()),
'timestamp': int(time.time() * 1000),
jw_token = get_jw_token()
headers = 'Authorization': 'Bearer ' + jw_token
response = requests.post(url, json=data, headers=headers)
return response.content
def get_jw_token():
with open('myfile.p8', 'r') as cert_file:
certificate = cert_file.read()
jw_token = jwt.encode(
'iss': issuer,'iat': int(time.time()), certificate,
algorithm='ES256',
headers='kid': keyid)
return jw_token
device_check_query(u"1234e323a22133....")
【讨论】:
keyFileName = ""; // 从developer.apple.com/account/ios/authkeykeyId 下载 = ""; // 可以在:developer.apple.com/account/ios/authkey TeamId = ""; // 可以在:developer.apple.com/account/#/membership 找到 另外值得注意的是,只有从具有显式配置文件的应用程序生成的设备令牌才有效。通配符配置文件没有。以上是关于DeviceCheck:无法验证授权令牌的主要内容,如果未能解决你的问题,请参考以下文章
无法验证 AAD 访问令牌 - IDX10511:签名验证失败