我是工作日肥皂 api 的新手,我正在尝试弄清楚如何发送肥皂请求以使用 SOAPUI 进行身份验证。任何建议将不胜感激。
4 回答
Workday API 使用 WS-Security 进行身份验证。
请记住,工作日主机是多租户的。因此,您将使用 WSDL 端点连接到正确的服务器,并且用户名字段将包含您的用户名和该服务器上的租户。
SOAP Auth to Workday 的用户名格式:
[user-name]@[tenant-name]
例子:youUserName@tenant6
您的工作日帐户也需要在集成开发人员组中。
您可能需要调整安全性和权限,以允许访问与 Web 服务相关的某些功能组和域。
如果您使用的是 SoapUI,请执行以下操作:
- 将 WSDL 导入到项目中。
- 在“集成绑定”中,转到设置。
- 在“服务端点”选项卡上,如上所述设置用户名。
- 将密码设置为您在租户中的密码。
- WSS-Type 应设置为 PasswordText。
现在,您可以提出请求。
不确定你到底指的是什么。您隐式地进行身份验证 - 没有单独的请求。Workday API 文档在此处发布。你应该阅读它。当您导入 WSDL 时,例如在 .Net 解决方案中,它将允许您访问各种 API 类。
例如,要从 SSIS 脚本任务连接到补偿 API,我使用以下命令:
// Instantiate and configure compensation client
CompensationPortClient compClient = // I use custom binding - gives me more control
new CompensationPortClient(CompensationObjectFactory.getWorkdayBinding(),
new EndpointAddress(endpointURL));
compClient.ClientCredentials.UserName.UserName = userName;
compClient.ClientCredentials.UserName.Password = password;
(我创建了 CompensationObjectFactory 来实例化所有客户端 API 对象,因为该过程有些公式化。)然后您可以使用客户端对象进行 API 调用,例如,查询一次性奖励:
Request_OneTime_Payment_RequestType request =
CompensationObjectFactory.getOneTimePaymentRequest(
CompensationObjectFactory.getBusinessProcessParameters(),
CompensationObjectFactory.getOneTimePaymentData(
planId, currency, amount, effDt, emplID, positionID));
Request_OneTime_Payment_ResponseType response =
compClient.Request_OneTime_Payment(request);
在通过安装wireshark并通过HTTP强制我的请求调试了一个工作的SOAP UI示例之后,我终于弄清楚了这一点!
之前发布的标题示例对我不起作用,因为它缺少一些信息。我进一步注意到,我捕获的标头在几个小时后工作,我提出了一个理论,即 Workday 忽略了除用户名和密码之外的所有内容。所以我测试了以下内容并且它有效:
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="bogus">
<wsse:Username>user@tenant</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">[PASSWORD HERE]</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">bogus</wsse:Nonce>
<wsu:Created>2000-10-02T21:12:28.365Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
如果你正在阅读这篇文章,祝你好运。SOAP 是一场彻头彻尾的噩梦!
要在此处添加响应,您可能还需要在 SOAP 标头中添加您的凭据,如下所示:
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="bogus">
<wsse:Username>[user]@[tenant]</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">[PASSWORD HERE]</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">bogus</wsse:Nonce>
<wsu:Created>2000-10-02T21:12:28.365Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>