Приложение обменивается данными по протоколу Open ID Connect с AWS Когнито, который подключен к ADFS, обмениваясь данными через SAML. Cognito, по сути, «проксирует» сервер ADFS.
ADFS содержит сопоставление групп, который требуется приложению, и я хотел бы импортировать эти группы в Cognito как фактическую группу Cognito, которая затем будет прочитана приложением из cognito:groups из ID-токена, предоставляемого Cognito.
В настройке пула пользователей AWS Cognito я не вижу способа сопоставить группы ADFS с группами Cognito — должен ли я полностью полагаться на настраиваемый атрибут для своего пула пользователей, который я могу сопоставить со свойством ADFS, или я что-то упускаю? часть конфигурации, которая позволяет Cognito создавать новые группы на лету и автоматически назначать пользователей в группы в Cognito?
редактировать: чтобы уточнить, Можно ли настроить Cognito для добавления/создания групп (не в качестве настраиваемого свойства, а как реальных управляемых групп cognito) при импорте пользователей?
@Sagar ADFS, Cognito и приложение уже общаются друг с другом - мой пробел в знаниях заключается в том, можно ли настроить группы из ADFS, чтобы они стали группами Cognito, или я должен полагаться на настраиваемое свойство пользователя Cognito для хранения списка имен групп.





Как настроить ADFS с помощью Cognito, описано в эта ссылка. Раздел, отвечающий на ваш вопрос, — это отображение на шаге 4, пункт 5. Я копирую соответствующий текст ниже:
Choose Attribute mapping. These mappings map the claims from the SAML assertion from AD FS to the user pool attributes.
Убедитесь, что ADFS отправляет группы в утверждениях. Для настройки стороны ADFS для групп может быть полезно эта ссылка.
Вы можете отладить поток с помощью плагина SAML-трассировщик в Firefox.
Спасибо @rsa. У меня уже работает интеграция, и я надеялся выяснить, есть ли способ сопоставить группы ADFS с фактическими группами cognito. Судя по всему, нет, и Cognito Groups/назначение пользователей в указанные группы должны будут управляться вручную в Cognito. Я надеялся, что кто-то сможет взвесить и сказать, возможно ли окончательно/невозможно.
У меня была та же проблема, и я также не нашел статического отображения в Cognito.
Единственный способ, который я вижу, — сопоставить группы AD с атрибутом custom:adgroups в Cognito и настроить лямбда-триггер Cognito «Pre Token Generation». Лямбда-выражение считывает значение custom:adgroups и вручную переопределяет группы Cognito пользователя.
NB - это не изменяет группу пользователя cognito навсегда, только для текущего сеанса, но с точки зрения приложения это именно то, что мне нужно.
См. фиктивный пример статического (безусловного) назначения группы ADMIN здесь:
def lambda_handler(event, context):
print(f'incoming event: {json.dumps(event)}')
# manual cognito group override
if event['triggerSource'] == "TokenGeneration_HostedAuth":
event['response'] = {
"claimsOverrideDetails": {
"groupOverrideDetails": {
"groupsToOverride": [
"ADMIN"
]
}
}
}
return event
Более подробная документация здесь: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html
Альтернативным решением может быть полный отказ от групп Cognito и использование ролей IAM для управления ролями/разрешениями приложений, как написано здесь: aws.amazon.com/blogs/security/…
Это может вам помочь stackoverflow.com/a/50373090/5543072