Рубрики
Без рубрики

Социальный логин AEM (Google OAuth2)

Протестировано на AEM 6.5.0 Как мы все знаем, AEM предоставляет несколько типов аутентификации “из коробки”… Помеченный как java, веб-разработчик, aem.

Протестировано на AEM 6.5.0

Как мы все знаем, AEM предоставляет несколько типов аутентификации из коробки с использованием Slings Обработчика аутентификации API.

Сегодня мы увидим, как мы можем использовать обработчик аутентификации OAuth для интеграции Google OAuth2. Весь код, необходимый для этого, доступен на GitHub .

Предпосылки

  1. Понимание Тип предоставления кода авторизации OAuth 2
  2. Идентификатор клиента и секрет приложения, зарегистрированного в консоли разработчиков Google .

    • В разрешенных URI перенаправления добавьте:/обратный вызов/j_security_check. Например.- локальный хост:4503/обратный вызов/j_security_check
  3. Базовое понимание scribe-java библиотеки. Предупреждение – AEM использует очень старую версию библиотеки scribe-java

Предыстория обработчика Oauthenticationhandler AEM разработала весь свой поток OAuth вокруг библиотеки Scribe-Java и предоставляет рабочее решение OOTB для Facebook и Twitter , которое мы можем протестировать на We. Образец сайта розничной торговли в режиме публикации. Мы также можем обратиться к com.adobe.granite.auth.oauth.импл. Обработчик аутентификации OAuth класс, доступный в Обработчике аутентификации OAuth Adobe Granite(com.adobe.granite.auth.oauth) пакет. . Аутентификация основана на 4 конфигурациях, которые мы обсудим ниже.

Внедрение провайдера

Во-первых, мы должны внедрить com.adobe.granite.auth.оавт. Провайдер интерфейс, который предоставит все данные поставщика удостоверений личности, в нашем случае это Google. Эта реализация должна быть зарегистрирована как служба OSGi, которая должна иметь свойство с именем oauth.provider.id с уникальным значением, которое будет использоваться для сопоставления конфигурации URL/поставщика с этим поставщиком. Пожалуйста, обратитесь к нашему репозиторию github

Конфигурация обработчика аутентификации OAuth

  1. Включите обработчик аутентификации OAuth, сохранив конфигурацию для Обработчика аутентификации OAuth Adobe Granite на системной консоли. Мы можем определить путь к репозиторию, в котором мы хотим активировать этот обработчик аутентификации. В нашем случае мы будем использовать значение по умолчанию, т.е. “/”, чтобы включить его в полном репозитории.
  2. Настройка IDP (Поставщик удостоверений личности/социальных услуг):
    1. Настройте сведения о поставщике в Приложении Adobe Granite OAuth и поставщике заводской конфигурации.

      • Идентификатор конфигурации -> уникальный идентификатор конфигурации поставщика. Это будет использоваться в URL-адресе для запуска потока OAuth для этого поставщика
      • Идентификатор клиента -> Зарегистрированный идентификатор клиента приложения
      • Секрет клиента -> Секрет зарегистрированного клиента приложения
      • Область действия -> Области, которые будут использоваться в потоке OAuth
      • Идентификатор провайдера -> oauth.provider.id свойство настроено для нашего провайдера. Это сопоставит реализацию нашего провайдера с этой конфигурацией провайдера.
      • Создать пользователей -> Будут ли аутентифицированные пользователи созданы в AEM или нет. В нашем случае мы включим это.
      • Свойство идентификатора пользователя -> Свойство социального провайдера, которое будет использоваться для сопоставления пользователя IDP (поставщика удостоверений личности) с пользователем AEM. Это дополнительная функция, которую можно использовать для переопределения значения свойства Provider.getUserId. В нашем случае мы будем использовать значение метода свойства getUserId нашего провайдера для сопоставления пользователя. Так что мы оставим это пустым.
      • Принудительное строгое сопоставление имени пользователя -> Включите это, чтобы обработчик авторизации использовал идентификатор авторизации пользователя AEM для сопоставления пользователя.
      • Кодировать идентификаторы пользователей -> Снимите этот флажок, потому что мы хотим сохранить электронную почту пользователя такой, какая она есть.
      • Хэш идентификаторов пользователей -> Снимите этот флажок, потому что мы хотим сохранить электронную почту пользователя такой, какая она есть.
      • URL обратного вызова -> AEM жестко закодировал это в “/обратный вызов/j_security_check”. Поэтому оставьте это поле пустым и обязательно добавьте “/обратный вызов/j_security_check” в разрешенные URI перенаправления вашего приложения.
      • Сохранить маркер доступа -> Сохранить маркер доступа в зашифрованном виде в профиле пользователя. В нашем случае мы его сохраним.
      • Сохранить маркер доступа в файлах cookie -> Сохранить маркер доступа в зашифрованном виде в файлах cookie. В нашем случае мы его отключим.
      • Включить защиту от подделки межсайтовых запросов -> Это позволит включить параметр состояния во время потока OAuth. В нашем случае мы включим его для повышения безопасности.
      • Включить сохранение параметра запроса в URL-адресе обратного вызова -> Добавить параметр запроса в URL-адрес обратного вызова. В нашем случае мы отключим это. Пожалуйста, имейте в виду, что если вы включите это, вам придется соответствующим образом обновить URL-адрес обратного вызова в конфигурации зарегистрированного приложения в консоли разработчиков Google или любом другом используемом вами социальном провайдере.
      • Включить поддержку конфигураций братьев и сестер – > В случае, если у вас есть несколько конфигураций для одного и того же социального провайдера, и вы хотите повторно использовать их во время аутентификации. В нашем случае мы отключим это. Примечание: Как только вы сохраните эту конфигурацию, AEM автоматически создаст две нижеприведенные конфигурации. В случае, если вы создаете две нижеприведенные конфигурации как часть своего кода или обновляете существующую в ConfigMgr, пожалуйста, убедитесь, что вы используете одно и то же значение для oauth.config.id этой конфигурации и idp.name , синхронизировать.Имя обработчика в ExternalLoginModuleFactory и handler.name по умолчанию используется Synchandler.
    2. Настройте обработчик синхронизации по умолчанию в Обработчик синхронизации Apache Jackrabbit по умолчанию заводская конфигурация.

      • Имя обработчика синхронизации -> Как указано в приведенном выше примечании, оно должно быть таким же oauth.config.id . В нашем случае это будет tgt-google.
      • Автоматическое членство пользователя -> Пользователь будет добавлен в эти группы автоматически. В случае, если мы хотим добавить пользователей в группу на основании некоторых условий, мы можем использовать метод onUserCreate реализации Поставщика.
      • Сопоставление свойств пользователя -> Карта свойств, возвращаемая методом mapProperties поставщика, будет использоваться здесь для сохранения свойств в профиле пользователя. Левая часть (перед узлом в разделе/главная/пользователи и правая часть (после ‘=’) – это ключ карты.
      • Префикс пути пользователя -> Относительный путь от/главная/пользователи, где будет создан пользователь. Пожалуйста, обратите внимание, что AEM внутренне создает папку с первыми 4 символами идентификатора пользователя и добавляет пользователя в эту папку. Так, например, в нашем случае мы добавили серого учителя здесь и, допустим, пользователь с идентификатором thegreyteacher@gmail.com * войдет в систему, то он будет создан в папке *//главная страница/пользователи/серый учитель/the .
      • Отключить отсутствующих пользователей -> Если пользователь снова вошел в систему и он не найден в IDP, он также будет удален из AEM, если этот флажок снят. Мы не хотим удалять пользователя и его данные из AEM, поэтому мы проверим это, чтобы только отключить пользователя, а не удалять его.
    3. Настройте внешний модуль входа в систему в Модуль внешнего входа Apache Jackrabbit заводская конфигурация.

      • Рейтинг JAAS -> 150 (по умолчанию)
      • Флаг управления JASS -> ДОСТАТОЧНЫЙ (по умолчанию). Этого должно быть ДОСТАТОЧНО.
      • Область JAAS -> пусто (по умолчанию)
      • Имя поставщика удостоверений личности -> Как указано в примечании выше, оно должно совпадать с oauth.config.id . В нашем случае это будет tgt-google.
      • Имя обработчика синхронизации -> Как указано в примечании выше, оно должно совпадать с oauth.config.id . В нашем случае это будет tgt-google.

Запуск потока OAuth

После всех вышеуказанных настроек поток OAuth будет запущен для всех URL-адресов, имеющих шаблон: {ваш домен}/any_path/j_security_check?configid={oauth.config.id значение свойства} . Пример: локальный хост:4503/j_security_check?configid=tgt-google .

Какой-то хаос

  1. В случае, если вы хотите использовать идентификатор электронной почты в качестве авторизованного идентификатора пользователя AEM и планируете интегрировать несколько поставщиков социальных сетей/удостоверений личности, таких как Google, Twitter, Facebook, GitHub и т.д. тогда это не сработает, потому что пользователь может быть аутентифицирован только с помощью одного поставщика удостоверений личности . Интеграция AEM из коробки для Facebook и Twitter также добавляет к идентификатору пользователя префикс, специфичный для поставщика, для создания другого идентификатора авторизации и, следовательно, другого пользователя для всех ВПЛ, даже если идентификатор электронной почты пользователя одинаков для разных ВПЛ. Невозможно переопределить это поведение, потому что AEM com.adobe.granite.auth.oauth.импл. Поставщик удостоверений OAuth валидатор проверяет пользователя на основе поставщика, который слишком сильно связан с обработчиком аутентификации OAuth. Итак, чтобы реализовать это поведение, мы должны написать ваш собственный Пользовательский обработчик аутентификации с нуля. Итак, чтобы реализовать это поведение, мы должны написать наш собственный
  2. Пользовательский обработчик аутентификации

Оригинал: “https://dev.to/thegreyteacher/aem-social-login-google-oauth2-23pf”