【问题标题】:In Apigee, how can developer accounts for an organization be accessed through a policy?在 Apigee 中,如何通过策略访问组织的开发者帐号?
【发布时间】:2014-03-31 20:24:45
【问题描述】:

在此用例中,在 API 代理中,必须访问组织中每个开发人员的自定义属性。

我知道调用“https://api.enterprise.apigee.com/v1/o/org_name/developers”会提供所有开发者的电子邮件(用户名)列表,然后我可以使用“https://api.enterprise.apigee.com/v1/o/org_name/developers/dev1_email@abc.com”获取特定的开发者帐户。

我尝试使用服务标注策略来获取所有开发者的列表,并返回开发者电子邮件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ServiceCallout async="false" continueOnError="false" enabled="true" name="get-developer-list">
    <DisplayName>Get Developer List</DisplayName>
    <Request learPayload="true" variable="DeveloperListRequest"/>
    <Response>DeveloperList</Response>
    <HTTPTargetConnection>
        <URL>https://api.enterprise.apigee.com/v1/o/myOrg/developers</URL>
    </HTTPTargetConnection>
</ServiceCallout>

但是,这需要用户名和密码,可以通过分配消息策略设置。如何做到这一点?这是总体上正确的方法还是有其他方法?

【问题讨论】:

    标签: apigee


    【解决方案1】:

    在大多数情况下,您应该避免调用管理服务器。管理服务器端点不是为您可以在 API 中处理的相同数量的流量而构建的,如果您过载它可能会导致它停止响应。

    要访问开发者的信息,您可以使用 AccessEntity 策略:

    <AccessEntity name="GetDeveloperInfo">
        <EntityType value="developer"/>
        <EntityIdentifier ref="variableHoldingIdentifier" type="developeremail"/>
    </AccessEntity>
    

    您在 EntityIdentifier ref 属性中指定包含您要访问的开发人员 ID 的变量。 EntityIdentifier 类型属性保存您用于访问实体的数据类型。对于开发者,您可以通过电子邮件、开发者 ID、appID 或 consumerKey 访问。详情请见the AccessEntity docs

    如果您需要从所有开发人员的列表开始,则无法通过标准策略执行此操作,并且您必须调用列表的管理 API,但您仍应使用 AccessEntity 策略检索开发者的数据。

    如果您完全担心安全性,我建议您创建一个专门用于使用复杂密码进行标注的用户。创建一个仅允许 GET 访问以读取开发人员列表的自定义角色,并仅为该用户分配该角色。将密码直接放入 API 意味着如果您在某处下载捆绑包/存档源代码,则用户名/密码可能会被泄露。您可以将密码的加密版本存储在键/值映射中,然后从那里检索它并在 API 中对其进行解密,这样某人就必须同时获取您的捆绑包并访问您的键/值映射数据才能获取任何使用权。在任何情况下,如果您已正确锁定该用户的访问权限,则获得用户凭据访问权限的人只能获得开发者列表,而不能获得其他任何信息。

    为避免过于频繁地调用(并淹没您的管理 API 端点),您可以将来自管理 API 的响应缓存一段时间(一分钟或更长时间)。这样可以避免大量流量冲击管理 API 的问题。

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      相关资源
      最近更新 更多