当用户单击按钮时,SAP Concur将发送一个带有编码查询字符串中的信息的请求。

请求

URI

Launch External URL标注启动应用程序连接器的URI,该连接器可以位于每个客户机的自定义位置。标准位置是:

https:// {servername} /同意/形式/ v1.0

控件上配置URI注册应用程序连接器Web服务政府

请求的完整URI包括以下查询字符串值:

https://{servername}/concur/form/v1.0/get?xcompanydomain={URL-encoded公司域名}&xuserid={url -encoded login ID of interactive user} &itemurl={url -encoded url to item} &nonce={url -encoded timestamp} &signature={url -encoded signature hash}

请求模式

价值 描述
xcompanydomain 公司域。
xuserid 登录用户的SAP Concur用户ID。这可能是一个费用委托,而不是报表所有者。要获取报表所有者ID,请使用itemurl获取费用条目的详细信息,然后使用这些详细信息获取相关的报表详细信息,包括报表所有者ID。
itemurl 用于访问字段所在项的url编码的URI。一个例子是expense Report web服务使用的费用条目URI。
现时标志 用于生成签名的url编码的GUID。
签名 url编码的签名哈希。

身份验证

要对请求进行身份验证,应用程序连接器中的页面开发人员需要生成身份验证签名,并将其与查询字符串中传递的签名进行比较。

当请求被连接器接收到时:

  1. 获取应用程序连接器的用户名和密码。如何做到这一点取决于您的实现。注意:用户名和密码必须至少为10个字符,以提高安全性,最大长度为50个字符。
  2. 解析和URL解码以下查询字符串:
    1. xcompanydomain
    2. Xuserid(用于后续web服务调用)
    3. itemurl
    4. 现时标志
    5. 签名(用于验证和验证请求)
  3. Base64-decode提供的签名。
  4. 计算你自己的基本签名字符串通过附加值如下:
    {xcompanydomain} + {xuserid} + {itemurl} +{连接器用户名}+{连接器密码}+ {nonce}
  5. 使用HMacSHA1使用基本签名字符串生成签名哈希。要生成密钥,请连接{连接器用户名}的小写值和确切的{连接器密码}。例如,如果连接器用户名是JohnDoe,密码是password,则密钥将是johndopassword。
  6. 将生成的签名哈希与请求查询字符串中提供的签名哈希进行比较。如果签名散列匹配,那么您就知道凭据是有效的,请求没有被篡改。

注:

  • 如果需要的话,您可以存储nonce来帮助防止重播攻击。
  • 查询参数的顺序并不重要,但是必须按照正确的顺序组合基本签名字符串中的值,才能正确地生成签名散列。

XML示例请求

xcompanydomain={url -encoded companydomain} &xuserid={url -encoded login ID of interactive user} &itemurl={url -encoded url to item} &nonce={url -encoded timestamp} &signature={url -encoded signature hash}

响应

内容的身体

应用程序连接器不直接响应Launch External URL请求。应用程序连接器使用入站Web服务完成对SAP Concur的任何更新。Launch External URL功能监视外部窗口,当窗口关闭时,它会重新绘制用户启动的表单,以显示任何更新的值。