我有一个使用 Okta 进行身份验证的 Django 应用程序:
headers = {
'Authorization': 'SSWS {}'.format(<okta api token>),
'Accept': 'application/json',
'Content-Type': 'application/json'
}
authentication_payload = {
'username': <username>,
'password': <password>
}
response = requests.post(
<okta auth endpoint>,
headers=headers,
data=json.dumps(authentication_payload)
)
这成功了。从响应内容中,我可以获得用户 ID:
content = json.loads(r.content.decode('utf-8'))
okta_user_id = content['_embedded']['user']['id']
然后我使用okta_user_id
创建端点以通过 id 获取 okta 用户:
okta_user_endpoint = https://<org>.okta.com/api/v1/users/<okta_user_id>
然后我使用来自身份验证调用的相同标头,具有相同的 api 令牌,并尝试通过 id 获取用户:
user_response = requests.get(
okta_user_endpoint,
headers=headers
)
但这是不成功的。我收到以下内容的 401 错误:
{
"errorCode":"E0000011",
"errorSummary":"Invalid token provided",
"errorLink":"E0000011",
"errorCauses":[]
}
使用无效令牌似乎很简单,但如果令牌无效,我如何能够成功进行身份验证调用?如果令牌对身份验证调用有效,为什么不能通过 id 获取用户?