1

我正在尝试使用 DocuSign api/sdk 发送文件供某人签名。这些例子是这样说的:

//.NET
APIServiceSoapClient apiService = new APIServiceSoapClient();
apiService.ClientCredentials.UserName.UserName = "Your DocuSign UserName here";
apiService.ClientCredentials.UserName.Password = "Your DocuSign Password here";

我当然尝试过,但它不起作用。

我收到以下错误:不满足安全要求,因为传入消息中不存在安全标头。

我试过了

var username = "myemail";
var pass = "mypass";
var iteratorKey = "iteratorkey";

APIServiceSoapClient apiService = new APIServiceSoapClient();
apiService.ClientCredentials.UserName.UserName = username; 
//also tried ...UserName = "[" + iteratorKey + "]" + username; 
apiService.ClientCredentials.UserName.Password = pass;

这不是满足所有安全要求的地方吗?也许?使用 APIService 而不是 DSAPIService 如果这会有所不同。

4

2 回答 2

2

我最终不得不使用不同的方式来传递凭据。我在其他地方找到的。我仍然不确定如何正确使用我尝试过的另一种方法,所以如果有人知道如何使用另一种方法,那就太好了,因为代码更简洁,更容易理解。

string auth = @"<DocuSignCredentials>
                   <Username>email</Username>
                   <Password>pass</Password>
                   <IntegratorKey>key</IntegratorKey>
                </DocuSignCredentials>";

DSAPIServiceSoapClient apiService = new DSAPIServiceSoapClient();            

using (var scope = new System.ServiceModel.OperationContextScope(apiService.InnerChannel))
{
    var httpRequestProperty = new System.ServiceModel.Channels.HttpRequestMessageProperty();
    httpRequestProperty.Headers.Add("X-DocuSign-Authentication", auth);
    System.ServiceModel.OperationContext.Current.OutgoingMessageProperties[System.ServiceModel.Channels.HttpRequestMessageProperty.Name] = httpRequestProperty;

    EnvelopeStatus envStatus = apiService.CreateAndSendEnvelope(envelope);
    return envStatus.EnvelopeID;
}
于 2013-11-08T16:09:34.257 回答
0

有两种方法可以通过 DocuSign 的 SOAP API(与较新的 REST API 不同)传递成员凭据:

  1. 通过 WS-Security UsernameToken 的 SOAP 标头
  2. HTTP Header 通过自定义字段“X-DocuSign-Authentication”</li>

Account Management API 仅支持 HTTP Header 身份验证方法,而所有其他 API 都可以支持任何一种方法。

此外,DocuSign SOAP API 有两个 API 端点:API.asmxDSAPI.asmx。API.asmx 端点需要 SOAP 标头身份验证中的WS-Security UsernameToken。DSAPI.asmx 和 AccountManagement.asmx 端点需要HTTP 标头身份验证方法。

于 2013-11-07T23:39:47.503 回答