You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Basic Auth获取REST API令牌及使用REST适配器发送登录对象

在SAP PO中使用REST适配器实现带认证的登录请求及令牌复用

针对你的需求(REST -> SAP PO -> SFTP文件传输,前置登录API需Basic认证+特定格式请求),以下是具体实现步骤:

一、配置REST适配器发送指定格式的登录请求

登录API要求:POST方法、application/x-www-form-urlencoded类型、表单参数obj={序列化JSON对象},同时需Basic认证。

  1. 创建REST发送通道
    • 基础配置:选择POST方法,填写目标登录API URL,在"HTTP Headers"中设置Content-Type: application/x-www-form-urlencoded。
    • Basic认证配置:在通道的"Security"标签下,选择"Basic Authentication",填入API要求的Basic Auth用户名和密码。
    • 请求体构造:需要生成obj=JSON字符串格式的表单数据,推荐用Groovy脚本实现(在消息映射或脚本步骤中):
      import java.net.URLEncoder
      import groovy.json.JsonBuilder
      
      // 构造登录JSON对象
      def loginPayload = [
          login: "my_email@company.com",
          pword: "my_password"
      ]
      def loginJson = new JsonBuilder(loginPayload).toString()
      // URL编码后拼接成表单参数
      def formData = "obj=${URLEncoder.encode(loginJson, "UTF-8")}"
      return formData
      
    • 将脚本输出作为REST通道的请求体,确保适配器正确发送符合要求的表单数据。

二、获取令牌并在后续API中复用

登录API返回的Token和登录密钥需要传递给后续的文件获取API,可通过SAP PO的动态配置实现跨步骤传递:

  1. 解析登录响应提取令牌
    在登录请求后的脚本步骤中,解析JSON响应并将令牌存入动态配置:

    import groovy.json.JsonSlurper
    import com.sap.aii.mapping.api.*
    
    def messageBody = inputStream.text
    def response = new JsonSlurper().parseText(messageBody)
    // 提取Token和登录密钥
    def token = response.token
    def loginKey = response.loginKey
    
    // 存入动态配置
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION)
    DynamicConfigurationKey tokenKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/REST", "AUTH_TOKEN")
    DynamicConfigurationKey keyKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/REST", "LOGIN_KEY")
    conf.put(tokenKey, token)
    conf.put(keyKey, loginKey)
    
  2. 后续API调用时传入令牌
    在文件获取的REST发送通道中,根据API要求的传递方式(Header/参数),从动态配置中取出值:

    • 若需放在请求Header:在通道的"HTTP Headers"中添加自定义Header(如Authorization: Bearer ${token}),通过动态配置变量引用(格式为${dynamicConfiguration:http://sap.com/xi/XI/System/REST#AUTH_TOKEN})。
    • 若需放在请求参数:在URL中拼接参数(如?token=${token}),同样引用动态配置变量。

注意事项

  • 确保JSON字符串的URL编码正确,避免特殊字符导致请求解析失败。
  • 测试阶段可先用Postman验证登录请求格式,确认能正常获取令牌后再迁移到SAP PO配置。
  • 动态配置的命名空间和键名可根据需求自定义,确保后续步骤能正确引用。

内容的提问来源于stack exchange,提问作者user22788171

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:26:06