簡體   English   中英

在Apigee中,如何通過策略訪問組織的開發者帳戶?

[英]In Apigee, how can developer accounts for an organization be accessed through a policy?

在此用例中,在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 '獲取特定的開發者帳戶。

我嘗試使用Service Callout策略獲取所有開發人員的列表,返回開發人員電子郵件:

<?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>

但是,這需要用戶名和密碼,可以通過“分配消息”策略進行設置。 怎么能實現這一目標? 這是正確的方法還是有其他方法嗎?

在大多數情況下,您應該避免呼叫管理服務器。 管理服務器端點不是為您可以在API中處理的相同數量的流量構建的,並且如果您使其超載,則可以使其停止響應。

要訪問開發人員的信息,您可以使用AccessEntity策略:

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

您可以在EntityIdentifier ref屬性中指定包含要訪問的開發人員ID的變量。 EntityIdentifier類型屬性包含用於訪問實體的數據類型。 對於開發人員,您可以通過電子郵件,開發人員ID,appID或consumerKey進行訪問。 有關更多詳細信息,請參閱AccessEntity文檔

如果您需要從所有開發人員的列表開始,您不能通過標准策略執行此操作,並且您必須調用管理API以獲取列表,但您仍應使用AccessEntity策略來檢索開發人員的數據。

如果您擔心安全問題,我建議您專門創建一個用戶使用復雜密碼進行標注。 創建僅允許GET訪問的自定義角色以讀取開發人員列表,並僅為該用戶分配該角色。 將密碼直接放入API意味着如果您在某處下載/歸檔源代碼,則可能會損害用戶名/密碼。 您可以將密碼的加密版本存儲在鍵/值映射中,並從那里檢索它並在API中解密,這樣某人就必須同時獲取您的包和訪問您的鍵/值映射數據以獲取任何密碼/值映射數據訪問。 在任何情況下,如果您已正確鎖定該用戶的訪問權限,則獲得用戶憑據訪問權限的人只能獲取開發人員列表,而不能獲取任何其他內容。

為了避免過於頻繁地調用(以及淹沒管理API端點),您可以將管理API的響應緩存一段時間(一分鍾或更長時間)。 這樣可以避免流量大的問題導致管理API出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM