Настройка WSO2 Identity Server в качестве диспетчера ключей с помощью диспетчера API

Мне нужны рекомендации по двум конкретным продуктам WSO2, API Manager и Identity Server, а также по лучшему решению проблемы, которую я собираюсь объяснить ниже.

В моей компании мы используем ADFS 3.0 для поддержки единого входа в наших приложениях. Однако сейчас мы создаем приложения, для которых потребуется спецификация OpenID Connect (SPA + Rest API), а ADFS не поддерживает это из коробки, поэтому мы решили использовать для этой цели продукты WSO2.

Мне уже удалось установить WSO2 Identity Server 5.0.0 SP1 и настроить ADFS в качестве федеративного поставщика удостоверений (новые приложения все равно должны будут аутентифицировать пользователей с помощью ADFS). Я также установил WSO2 API Manager 1.9.1 и настроил его для использования WSO2 Identity Server в качестве диспетчера ключей (Руководство по настройке).

Теперь проблема:

При использовании WSO2 Identity Server 5.0.0 SP1 мне не удалось заставить работать функцию выхода из системы из-за обнаруженной проблемы здесь. Похоже, что эта проблема была решена в версии 5.1.0M4, поэтому я попытался установить версию 5.1.0-alpha и смог выйти из системы для работы с ADFS (я протестировал ее, включив единый вход для администрирования углерода). Однако теперь я не могу установить функцию Key Manager через углеродные репозитории из-за несовместимости.

В результате с первой комбинацией (wso2is 5.0.0 SP1 / wso2am 1.9.1) у меня была проблема с выходом из системы с ADFS, а со второй комбинацией (wso2is 5.1.0-alpha / wso2am 1.9.1) я не возможность установить функцию Key Manager в Identity Server.

Есть ли способ применить патч для решения проблемы выхода из системы в первой комбинации? Есть ли способ установить функцию диспетчера ключей на WSO2IS 5.1.0-alpha? Или кто-нибудь может указать мне другое решение этой проблемы?


person Michael    schedule 23.09.2015    source источник


Ответы (1)


проблема, указанная вами выше, помечена как «Патч». Обычно это означает, что WSO2 устранила эту проблему в более ранней версии и предоставила своему клиенту исправление. Проще всего, если вы уже являетесь клиентом WSO2, попросите патч непосредственно у их службы поддержки.

Если вы не являетесь платным клиентом WSO2, у вас проблемы. Согласно этому вопросу, источник пакета обновления также недоступен. на публике.

Но, к счастью, в вашем случае компонент, для которого требуется это исправление, не является основным компонентом. Так что у вас не будет проблем, если вы измените бит кода аутентификатора. Но предупреждаем, что при этом будут потеряны все исправления, сделанные для org.wso2.carbon.identity.application.authenticator.samlsso_4.2.1.jar в пакете обновления.


В любом случае, это шаги, которым вы должны следовать.

  1. Проверить источник. Ленивый путь - это проверка всего источника из здесь. Это самый простой способ, при котором вы столкнетесь с меньшими проблемами при попытке собрать исходный код, но обратная сторона этого заключается в том, что проверка займет немного времени. Если вы знаете, как собрать конкретный компонент из источника WSO2, вы можете напрямую проверить компонент, который необходимо изменить.
  2. Попробуйте собрать компонент без каких-либо изменений, чтобы убедиться, что на данный момент нет никаких проблем.
  3. Перейдите к классу DefaultSAML2SSOManager и выполните те же изменения, что и в PR.
  4. Снова соберите компонент.
  5. Создайте папку с именем «patch9000» внутри папки <IS_HOME>/repository/components/patches/.
  6. Скопируйте файл сборки (org.wso2.carbon.identity.application.authenticator.samlsso-4.2.1.jar) на шаге 4 из папки target в папку <IS_HOME>/repository/components/patches/patch9000.
  7. Перезагрузите сервер. Если вы сделали все по назначению, при запуске сервера он напечатает журнал типа org.wso2.carbon.server.extensions.PatchInstaller - Patch changes detected

Теперь попробуйте снова запустить свой поток, и он будет работать, как ожидалось.

Если вам лень делать все вышеперечисленное, вы можете подождать, пока Identity Server Service Pack 2 не будет содержать вашего исправления.

person DarRay    schedule 23.09.2015
comment
Спасибо за Ваш ответ. Я относительно новичок в продуктах WSO2, и у меня есть несколько вопросов. Что означает 9000 в папке patch9000? Допустим, я решил создать этот патч и применить его, тогда можно ли будет отменить его, когда будет доступен пакет обновления 2? - person Michael; 23.09.2015
comment
Если вы дойдете до этой папки с патчами, вы увидите, что там есть папка patch1016 с именами, которая содержит jar-файлы, поставляемые с пакетом обновления. Что вам нужно сделать, так это создать папку с номером больше 1016. Поэтому я проинструктировал вас создать папку patch9000. Вы можете создать любую папку вроде patch1017, patch1500 и т. Д. Только она должна быть выше patch1016 - person DarRay; 23.09.2015
comment
@Michael И да, можно отменить сделанные вами изменения. Удалите созданную вами папку с патчами (patch9000) и перезапустите сервер. Если сервер обнаружил, что исправление было отменено, он распечатает журнал обнаружения изменений исправлений при запуске. - person DarRay; 23.09.2015
comment
В конце концов мне удалось решить проблему, но это было непросто. Сначала я попытался, как вы сказали, проверить исходный код и применить изменения, которые решат проблему выхода из системы. Это не сработало, вероятно, из-за изменения исходного кода Service Pack 1. - person Michael; 24.09.2015
comment
Затем я попробовал себя на собственном опыте, я установил WSO2IS-5.0.0 с Service Pack 1 и все существующие исправления безопасности на странице продукта WSO2 IS, я нашел последний патч, содержащий org.wso2.carbon.identity.application.authenticator. samlsso-4.2.1.jar, я декомпилировал его с помощью JD Java Decompiler, обновил код по мере необходимости, а затем перекомпилировал все, чтобы получить .class, который я изменил. Перепаковал все и вуаля :) Спасибо @DarRay, ваши комментарии были очень полезны! - person Michael; 24.09.2015
comment
Сожалею, что вам пришлось пройти тяжелый путь. В аутентификаторе должно быть сделано несколько исправлений, поэтому выполнение этого исправления поверх исходного кода может не сработать. В любом случае, спасибо за информацию. Я тоже извлек из этого урок. - person DarRay; 25.09.2015