Я пытаюсь получить доступ к API, который использует неявную аутентификацию потока грантов. Я построил URL с необходимыми деталями. Когда я вставляю URL в браузер и нажимаю Enter, он запрашивает учетные данные для входа, после ввода я получаю новый URL с id_token, как и ожидалось. Я пытаюсь автоматизировать этот шаг с помощью Python, используя библиотеку «запросов», где я терплю неудачу. Все, что мне нужно, это новый URL с id_token в нем.
PS - я новичок в HTTP / HTML / потоках аутентификации.
При вставке следующего URL в браузере,
https://sso-dev.dummy.com/adfs/oauth2/authorize?client_id=xxxxx-xxxxx-xx-xxx-xx&response_type=id_token&redirect_uri=https%3A%2F%2Ftest_api.dummy.com%2Fauth%2Fcallback&scope=openid&nonce=xYz52761!V78
Я получаю следующий URL, что я и ожидаю.
https://test_api.dummy.com/auth/callback#id_token=xxxxxxxxxxxxxxx
Я попробовал следующий код Python:
import requests
URL = r"https://sso-dev.dummy.com/adfs/oauth2/authorize?client_id=xxxxx-xxxxx-xx-xxx-xx&response_type=id_token&redirect_uri=https%3A%2F%2Ftest_api.dummy.com%2Fauth%2Fcallback&scope=openid&nonce=xYz52761!V78"
# Login credentials
payload = {
'UserName' : 'myUserName',
'Password' : 'myPass'
}
with requests.Session() as session:
post = session.post(URL, data=payload, allow_redirects=True)
r = session.get(URL, allow_redirects=True)
response = r
print(response.status_code) # 200
print(response.url) # getting same URL as the input, expecting the redirected URL with the id_token