AWS Cognito — создавайте группы из ADFS как группы Cognito

Приложение обменивается данными по протоколу Open ID Connect с AWS Когнито, который подключен к ADFS, обмениваясь данными через SAML. Cognito, по сути, «проксирует» сервер ADFS.

ADFS содержит сопоставление групп, который требуется приложению, и я хотел бы импортировать эти группы в Cognito как фактическую группу Cognito, которая затем будет прочитана приложением из cognito:groups из ID-токена, предоставляемого Cognito.

В настройке пула пользователей AWS Cognito я не вижу способа сопоставить группы ADFS с группами Cognito — должен ли я полностью полагаться на настраиваемый атрибут для своего пула пользователей, который я могу сопоставить со свойством ADFS, или я что-то упускаю? часть конфигурации, которая позволяет Cognito создавать новые группы на лету и автоматически назначать пользователей в группы в Cognito?

редактировать: чтобы уточнить, Можно ли настроить Cognito для добавления/создания групп (не в качестве настраиваемого свойства, а как реальных управляемых групп cognito) при импорте пользователей?

Это может вам помочь stackoverflow.com/a/50373090/5543072

Sagar P. Ghagare 19.03.2019 12:58

@Sagar ADFS, Cognito и приложение уже общаются друг с другом - мой пробел в знаниях заключается в том, можно ли настроить группы из ADFS, чтобы они стали группами Cognito, или я должен полагаться на настраиваемое свойство пользователя Cognito для хранения списка имен групп.

Tobias Roland 19.03.2019 18:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
2
3 223
2

Ответы 2

Как настроить 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. Я надеялся, что кто-то сможет взвесить и сказать, возможно ли окончательно/невозможно.

Tobias Roland 20.03.2019 10:25

У меня была та же проблема, и я также не нашел статического отображения в 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/…

tibor 10.12.2019 17:20

Другие вопросы по теме