Я пытаюсь реализовать OAuth-доступ к Cognito, используя идентификатор клиента / секрет из нашего IdP, чтобы получить токен доступа Cognito для использования API-шлюза
Я добавил в наш IdP в качестве провайдера идентификации, использующего OIDC. Цель состоит в том, чтобы отправить Cognito идентификатор клиента / секрет из нашего IdP и получить токен доступа, который мы можем использовать для доступа к шлюзу API. Ключевым моментом здесь является то, что мы хотим, чтобы приложение, которое обращается к AWS, оставило наш токен доступа в нашем IdP. Я надеялся, что смогу передать идентификатор клиента / секрет, который я настроил в нашем провайдере OIDC, в Cognito и получить токен доступа обратно. Короче код выглядит так:
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic XXXXXXXXXXXXXX' #base 64 encoded client id / secret from Cognito
}
params = (
('grant_type', 'client_credentials'),)
response = requests.post('https://xxxxxxx.auth.us-east-1.amazoncognito.com/oauth2/token', headers=headers, params=params, verify=False #SSL issues on my machine due to self-signed cert)
Когда я отправляю приложение в Client Id / Secret моего IdP, я получаю {'error': 'invalid_client'}, потому что Cognito ожидает идентификатор клиента приложения в пуле пользователей, а не приложения, которое я настроил как провайдер OIDC.