Workday SOAP API:如何进行身份验证

时间:2014-11-25 16:47:05

标签: soap workday-api

我是workday soap api的新手,我正在试图找出如何使用SOAPUI发送soap请求进行身份验证。 任何建议,将不胜感激。

4 个答案:

答案 0 :(得分:15)

Workday API使用WS-Security进行身份验证。

请记住,工作日主机是多租户。因此,您将使用WSDL端点连接到正确的服务器,并且用户名字段将包含您的用户名和该服务器上的租户。

SOAP Auth to Workday的用户名格式: [user-name]@[tenant-name]

示例:youUserName@tenant6

您的工作日帐户也需要在Integration Developer的小组中。

您可能需要调整安全性和权限,以允许访问与Web服务相关的某些功能组和域。

如果您正在使用SoapUI,请执行以下操作:

  • 将WSDL导入项目。
  • 在“集成绑定”中,转到设置。
  • 在“服务端点”标签上,设置用户名,如上所述。
  • 在租户中将密码设置为您的密码。
  • WSS-Type应设置为PasswordText。

现在,您可以提出请求。

答案 1 :(得分:9)

不确定你到底指的是什么。您隐式进行身份验证 - 没有单独的请求。 Workday API文档为published here。你应该阅读它。当您导入WSDL时,例如在.Net解决方案中,它将允许您访问各种API类。

例如,要从SSIS脚本任务连接到Compensation 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);

答案 2 :(得分:3)

在通过安装wireshark并通过HTTP强制我的请求来调试一个有效的SOAP UI示例之后,我终于找到了答案!

以前发布的标头示例对我不起作用,因为它缺少一些信息。我进一步注意到,捕获的标头在几个小时后起作用,并且我发展出一种理论,即Workday会忽略用户名和密码之外的所有内容。因此,我测试了以下内容,并且有效:

ScrollView

祝您好运,如果您正在阅读此书。 SOAP是一场噩梦!

答案 3 :(得分:1)

要在此处添加响应,您可能还需要在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>