Безопасный прокси Apigee Edge с помощью ключа? - PullRequest
0 голосов
/ 23 февраля 2019

Мы используем двустороннюю связь TLS между Apigee Edge и Backend-сервером (который предоставляется с помощью NginxIngress в Kubernetes).Однако мы хотим интегрировать Apigee Edge с клавиатурой для защиты конечной точки Apigee (например, https://org -name-env.apigee.net / path ).

Я новичок в Apigeeи Keycloack, и после долгих поисков я отправляю этот вопрос, чтобы получить надлежащую документацию по использованию Keycloak с Apigee Edge.Любая статья, ответы сообщества, предложения, указания, документация или POC будут полезны.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Ниже приведен документ, который я создал для настройки и создал документ уценки для него, который выглядит примерно так:

1 Генерация токена JWT с помощью KeyCloak
  • При условии базовой настройкиKeyCloak, как Realm, Roles, Users и т. Д., создает токен JWT для пользователя.(Вы можете проверить этот токен JWT из jwt.io, используя открытый ключ области KeyCloak, чтобы убедиться, что токен JWT действителен и подписан).Открытый ключ можно найти в Realm Settings.Обратитесь к этому изображению , чтобы получить открытый ключ.
    Добавьте -----BEGIN PUBLIC KEY----- и добавьте -----END PUBLIC KEY----- к этому скопированному открытому ключу, чтобы использовать его в конфигурации Apigee и в jwt.io.Вот как будет выглядеть действительный и пригодный для использования открытый ключ:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhAj9OCZd0XjzOIad2VbUPSMoVK1X8hdD2Ad+jUXCzhZJf0RaN6B+79AW5jSgceAgyAtLXiBayLlaqSjZM6oyti9gc2M2BXzoDKLye+Tgpftd72Zreb4HpwKGpVrJ3H3Ip5DNLSD4a1ovAJ6Sahjb8z34T8c1OCnf5j70Y7i9t3y/j076XIUU4vWpAhI9LRAOkSLqDUE5L/ZdPmwTgK91Dy1fxUQ4d02Ly4MTwV2+4OaEHhIfDSvakLBeg4jLGOSxLY0y38DocYzMXe0exJXkLxqHKMznpgGrbps0TPfSK0c3q2PxQLczCD3n63HxbN8U9FPyGeMrz59PPpkwIDAQAB
-----END PUBLIC KEY-----

См. эту публикацию с medium.com для получения дополнительной информации о генерации JWT с KeyCloak.

2 Использование политики VerifyJWT в Apigee
  • Предполагая, что базовая политика Apigee создана для конечной точки сервера, добавляет политику AssignMessage , чтобы предоставить открытый ключ в разделе PreFlow прокси-сервера., так что все запросы будут проходить через эту политику, а открытый ключ KeyCloak будет назначен переменной.
    Нажмите здесь , чтобы узнать больше о настройке потоков в Apigee.
    AssignMessage policy XMLбудет выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>Assign Message-1</DisplayName>
    <Properties/>
    <AssignVariable>
        <Name>public.key</Name>
        <Value>-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhAj9OCZd0XjzOIad2VbUPSMoVK1X8hdD2Ad+jUXCzhZJf0RaN6B+79AW5jSgceAgyAtLXiBayLlaqSjZM6oyti9gc2M2BXzoDKLye+Tgpftd72Zreb4HpwKGpVrJ3H3Ip5DNLSD4a1ovAJ6Sahjb8z34T8c1OCnf5j70Y7i9t3y/j076XIUU4vWpAhI9LRAOkSLqDUubRX/ZdPmwTgK91Dy1fxUQ4d02Ly4MTwV2+4OaEHhIfDSvakLBeg4jLGOSxLY0y38DocYzMXe0exJXkLxqHKMznpgGrbps0TPfSK0c3q2PxQLczCD3n63HxbN8U9FPyGeMrz59PPpkwIDAQAB
-----END PUBLIC KEY-----</Value>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Примечание: Всегда рекомендуется использовать KeyValueMap вместо прямого использования значений, таких как закрытый ключ или секретныйи т. д.

  • Следующим шагом является использование JWTPolicy для проверки токена JWT с использованием открытого ключа, назначенного на предыдущем шаге.Упомяните имя переменной, имеющей открытый ключ, в качестве значения в теге PublicKey .Окончательный XML-файл будет выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<VerifyJWT async="false" continueOnError="false" enabled="true" name="Verify-JWT-1">
    <DisplayName>Verify JWT-1</DisplayName>
    <Algorithm>RS256</Algorithm>
    <PublicKey>
        <Value ref="public.key"/>
    </PublicKey>
    <Subject>Subject from the JWT token</Subject>
    <Issuer>http://issue-of-the-token.com</Issuer>
    <Audience>aud1,aud2</Audience>
</VerifyJWT>

Примечание: Дополнительные входные данные можно проверить с помощью тега AdditionalClaims .
Нажмите AssignMessage , JWTPolicy или KeyValueMap , чтобы узнать больше.

0 голосов
/ 26 февраля 2019

Сообщество Apigee - отличное место для того, чтобы задавать подобные вопросы https://community.apigee.com/

Я не уверен на 100% во всей этой позиции, но я считаю, что подход Apigee Edge к двусторонним TLS насвязанный с югом участок напрямую не расширяется для поддержки внешней службы управления ключами, такой как KeyCloak.Конфиги Apigee trustStore и 'target endpoint' в основном исправлены.Тем не менее, в вашей политике Apigee вам не нужно использовать концепцию Apigee целевой конечной точки в качестве конечного пункта назначения вашего трафика.Имея некоторую дополнительную сложность в определении политики Edge, дополнительные JS и т. Д., Вы можете вызвать API-интерфейс администратора KeyCloak, а затем использовать объекты ответа для создания ваших собственных двухсторонних безопасных вызовов TLS для южных служб ваших внутренних служб.

...