![](/img/trans.png)
[英]In Apigee, how can I access callout response in javascript policy
[英]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.