【问题标题】:Where should my username and password be placed in the POST of a SOAP api我的用户名和密码应该放在 SOAP api 的 POST 的什么位置
【发布时间】:2019-01-24 04:57:52
【问题描述】:

我把 api 调用放在下面。在这一点上,我什至不确定它是否正确。我需要在其中添加我的用户名和密码,但不确定在哪里。任何有关用户名和密码位置的建议将不胜感激。

api 调用的背景是它是通过邮递员发送给我的,我可以在其中运行它。我能够从邮递员那里提取正文,但我需要在 API 调用中包含身份验证。

在此处输入代码

library(RCurl)

headerFields =
  c(Accept = "text/xml",
    'Content-Type' = "text/xml; charset=utf-8")

body = '<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.sitename.com/bizconnect/SBU">
<SOAP-ENV:Body>
<ns1:GetSBUApplicationData>
<ns1:Subscriber>
<ns1:SubCode>123456</ns1:SubCode>
</ns1:Subscriber>
<ns1:UserID>xxxxxx</ns1:UserID>
<ns1:ReferenceID>A</ns1:ReferenceID>
<ns1:ResponseVersion>010</ns1:ResponseVersion>
<ns1:Application>
<ns1:Id>G020D</ns1:Id>
<ns1:Name/>
<ns1:Key>
<ns1:Field>
<ns1:Id>00920000</ns1:Id>
<ns1:Name/>
<ns1:Value>900000095</ns1:Value>
</ns1:Field>
</ns1:Key>
</ns1:Application>
</ns1:GetSBUApplicationData>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>'

curlPerform(url = "https://stg1-ss1.sitename.com/bizconnect/SBU/service",
            httpheader = headerFields,
            postfields = body
)

【问题讨论】:

  • 这个没看过,我去看看。
  • 能否提供更多细节?对于如何保护 SOAP ebservice 有很多不同的方法,例如基本身份验证、WS-Security 等...更多关于身份验证方法的详细信息将很容易提供正确的答案。

标签: r api soap


【解决方案1】:

好的。目前,鉴于它在邮递员中对您工作正常,我将假设该服务正在使用基本身份验证运行。

在这种情况下,您不需要在 SOAP 信封中包含身份验证详细信息,而是在 HTTP 级别进行身份验证。

建议尝试这样的事情;

curlPerform(url = "https://stg1-ss1.sitename.com/bizconnect/SBU/service",
        httpheader = headerFields,
        postfields = body, userpwd = "user:password")

有关更多详细信息,我建议查看 JStatSoft 论文的 RCurl 的第 4.2 节,此处为:http://www.omegahat.net/RCurl/RCurlJSS.pdf

我不太喜欢在代码文件中包含凭据的 inc,因此我还建议查看论文中关于如何将凭据外部化到单独的密码文件中的指南。这样您就不会意外地将凭据检查到您的版本控制中。

【讨论】:

  • 谢谢,正在使用基本身份验证。我遇到了 SSL 的新问题,但我能够获得成功的身份验证。我已经准备好今晚阅读上面的pdf。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-10-22
  • 2011-12-20
  • 2010-10-13
  • 2016-03-31
  • 2015-10-19
  • 2011-10-01
  • 2021-11-07
  • 1970-01-01
相关资源
最近更新 更多