Apigee Edge策略中的Base64编码

时间:2014-01-11 00:14:56

标签: apigee

在Apigee政策中进行Base64编码的最简单方法是什么?我需要编码要以编程方式发送的SMS文本。

我知道我可以明确地包含代码,但我更倾向于使用内置的功能(如果可用)。

4 个答案:

答案 0 :(得分:3)

实现此目标的最有效方法是创建python script policy,然后使用python's built-in base64模块构建一个简单的函数base64编码或 - 解码参数。

如果您从此处获取示例代理:http://apigee.com/docs/api-services/content/api-proxy-samples,您将在/simpleProxy/apiproxy/resources/py中找到一个python示例。

政策XML是这样的:

<Script name="Script-GenerateAuthHeader">
  <ResourceURL>py://Authheader.py</ResourceURL>
</Script>

python代码如下所示:

import base64

username = flow.getVariable("request.formparam.client_id")
password = flow.getVariable("request.formparam.client_secret")

base64string = base64.encodestring('%s:%s' % (username, password))[:-1]

flow.setVariable("my.base64.blob", base64string)

或者,如果python不是你的风格,you could do this in javascript使用js资源,甚至直接在Node.js proxy

答案 1 :(得分:1)

目前还没有内置的简单注入HTTP Basic Auth标头或生成字符串的base64编码的功能。

您可以使用Javascript标注执行此操作。

政策XML:

<Javascript name='JavaScript-SetAuthz'>
  <ResourceURL>jsc://nameOfTheJavaScriptFileHere.js</ResourceURL>
</Javascript>

the JavaScript

答案 2 :(得分:1)

我们还添加了一个示例,演示如何在JavaScript中执行此操作:

https://github.com/apigee/api-platform-samples/tree/master/sample-proxies/base64encoder

答案 3 :(得分:0)

- 缺乏评论的声誉(这样的耻辱)所以添加答案 -

由于您专门询问了编码文本而不是二进制内容,因此您可以使用b64encode而不是编码字符串对Cheeso的答案进行微小改进:

base64string = base64.b64encode('%s:%s' % (username, password))

在我的测试中,这也快一点。