Rest 使用KeyClope保护Apigee边缘代理?

Rest 使用KeyClope保护Apigee边缘代理?,rest,keycloak,apigee,Rest,Keycloak,Apigee,我们在Apigee边缘和后端服务器之间使用双向TLS通信(在Kubernetes中使用Nginxingres公开)。但是,我们希望将Apigee Edge与KeyClope集成,以保护Apigee端点(例如) 我是Apigee和Keycloack的新手,在搜索了很多之后,我发布了这个问题,以获得有关Apigee Edge使用KeyClock的适当文档。任何文章、社区答案、建议、方向、文档或POC都会很有帮助。Apigee社区是提出此类问题的好地方 我不能100%确定这个位置的完整性,但我相信Ap

我们在Apigee边缘和后端服务器之间使用双向TLS通信(在Kubernetes中使用Nginxingres公开)。但是,我们希望将Apigee Edge与KeyClope集成,以保护Apigee端点(例如)


我是Apigee和Keycloack的新手,在搜索了很多之后,我发布了这个问题,以获得有关Apigee Edge使用KeyClock的适当文档。任何文章、社区答案、建议、方向、文档或POC都会很有帮助。

Apigee社区是提出此类问题的好地方


我不能100%确定这个位置的完整性,但我相信Apigee Edge在南行航段上的双向TLS方法不能直接扩展以支持外部密钥管理服务,如key斗篷。Apigee信任库和“目标端点”配置基本上是固定的。也就是说,在Apigee策略中,您不必使用Apigee的目标端点概念作为流量的最终目的地。在边缘策略定义、附加JS等方面增加了一些复杂性,您可以调用KeyClope的管理API,然后使用响应对象构建您自己对后端服务的南向双向TLS安全调用。

Apigee社区是询问这些类型问题的好地方


我不能100%确定这个位置的完整性,但我相信Apigee Edge在南行航段上的双向TLS方法不能直接扩展以支持外部密钥管理服务,如key斗篷。Apigee信任库和“目标端点”配置基本上是固定的。也就是说,在Apigee策略中,您不必使用Apigee的目标端点概念作为流量的最终目的地。在边缘策略定义、附加JS等方面增加了一些复杂性,您可以调用KeyClope的管理API,然后使用响应对象构建您自己对后端服务的南向双向TLS安全调用。

下面是我创建的文档,用于执行设置,并创建了一个标记文档,如下所示:

1使用KeyClope生成JWT令牌
  • 假设完成了keydeport的基本设置,比如领域、角色、用户等,那么为用户创建JWT令牌。(您可以使用KeyClope领域的公钥从JWT.io验证此JWT令牌,以确保JWT令牌有效且已签名)。公钥可在
    领域设置
    中找到。请参阅以获取公钥
    添加
    ----开始公钥------
    并将
    ----结束公钥------
    附加到此复制的公钥,以便在Apigee配置和jwt.io上使用它。以下是有效且可用的公钥的外观:
请参阅media.com上的帖子,以了解有关使用keydepeat生成JWT的更多详细信息

2在Apigee中使用VerifyJWT策略
  • 假设为服务器终结点创建了基本Apigee策略,请在代理的预流部分添加一个策略以提供公钥,以便所有请求都将通过此策略,并将KeyClope公钥分配给一个变量。
    单击以了解有关在Apigee中配置流的详细信息。
    AssignMessage策略XML将如下所示:

而不是直接使用私钥或secret等值

  • 下一步是使用在上一步中分配的公钥来验证JWT令牌。在PublicKey标记中提及将公钥作为其值的变量名。 最终的XML文件如下所示

验证JWT-1

,或了解更多信息。

以下是我为进行设置而创建的文档,并为其创建了一个降价文档,如下所示:

1使用KeyClope生成JWT令牌
  • 假设完成了keydeport的基本设置,比如领域、角色、用户等,那么为用户创建JWT令牌。(您可以使用KeyClope领域的公钥从JWT.io验证此JWT令牌,以确保JWT令牌有效且已签名)。公钥可在
    领域设置
    中找到。请参阅以获取公钥
    添加
    ----开始公钥------
    并将
    ----结束公钥------
    附加到此复制的公钥,以便在Apigee配置和jwt.io上使用它。以下是有效且可用的公钥的外观:
请参阅media.com上的帖子,以了解有关使用keydepeat生成JWT的更多详细信息

2在Apigee中使用VerifyJWT策略
  • 假设为服务器终结点创建了基本Apigee策略,请在代理的预流部分添加一个策略以提供公钥,以便所有请求都将通过此策略,并将KeyClope公钥分配给一个变量。
    单击以了解有关在Apigee中配置流的详细信息。
    AssignMessage策略XML将如下所示:

而不是直接使用私钥或secret等值

  • 下一步是使用在上一步中分配的公钥来验证JWT令牌。在PublicKey标记中提及将公钥作为其值的变量名。 最终的XML文件如下所示

验证JWT-1
,或了解更多

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhAj9OCZd0XjzOIad2VbUPSMoVK1X8hdD2Ad+jUXCzhZJf0RaN6B+79AW5jSgceAgyAtLXiBayLlaqSjZM6oyti9gc2M2BXzoDKLye+Tgpftd72Zreb4HpwKGpVrJ3H3Ip5DNLSD4a1ovAJ6Sahjb8z34T8c1OCnf5j70Y7i9t3y/j076XIUU4vWpAhI9LRAOkSLqDUE5L/ZdPmwTgK91Dy1fxUQ4d02Ly4MTwV2+4OaEHhIfDSvakLBeg4jLGOSxLY0y38DocYzMXe0exJXkLxqHKMznpgGrbps0TPfSK0c3q2PxQLczCD3n63HxbN8U9FPyGeMrz59PPpkwIDAQAB
-----END PUBLIC KEY-----
<?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>
<?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>