> You are reading the Docusign Developer Documentation. For clean Markdown of any page, append .md to the page URL. > > Documentation indexes by section: > - APIs and SDKs: https://docusign.docs.buildwithfern.com/docs/llms.txt > - Platform 101: https://docusign.docs.buildwithfern.com/platform/llms.txt > - Extension Apps: https://docusign.docs.buildwithfern.com/extension-apps/llms.txt > - Docusign CLI: https://docusign.docs.buildwithfern.com/docusign-cli/llms.txt > > Authentication (OAuth, JWT Grant, M2M): https://docusign.docs.buildwithfern.com/platform/auth > Webhooks and Connect: https://docusign.docs.buildwithfern.com/platform/webhooks > > OpenAPI specifications: https://docusign.docs.buildwithfern.com/openapi.json > MCP server: https://docusign.docs.buildwithfern.com/_mcp/server # Authentication > **Note** > > This page describes functionality for the older eSignature SOAP API. See the REST API [Authentication](/docs/esign-rest-api/esign101/auth) topic for more information on authentication in the more actively-supported eSignature REST API documentation. All Docusign API methods require authentication. There are three way to pass member credentials: * SOAP Header via WS-Security UsernameToken * HTTP Header via a custom field “X-Docusign-Authentication” * [App Password](/docs/esign-soap-api/esign101/auth/app-password-authentication) authentication > **Warning** > > Starting on August 16th 2021, Docusign began the end-of-life process for all SOAP API authentication flows other than [App Password](/docs/esign-soap-api/esign101/auth/app-password-authentication) (for SOAP apps). > > * Currently, only apps that use [App Password authentication](/docs/esign-soap-api/esign101/auth/app-password-authentication) are able to go-live. > * After October 20th, 2022, Docusign will begin accepting SOAP partner requests for legacy username/password authentication extensions. In March 2023, SOAP Partner apps that have not been granted an extension will be blocked from using legacy auth. See [Requesting an exception for using legacy authentication for details.](/platform/auth/oauth2-requirements-migration#requestingException/) The Account Management API only supports the HTTP Header or App Password authentication methods, while all others can support either method. Additionally, the eSignature SOAP API has two API end points: API.asmx and DSAPI.asmx. The API.asmx end point requires the WS-Security UsernameToken in the SOAP header authentication. The DSAPI.asmx and AccountManagement.asmx end points require the HTTP Header or App Password authentication method. ## HTTP header authentication For the HTTP header, access to the API must be enabled for the member login that is being used. This is controlled by combinations of user name, password and integration key. The valid authentication combinations are: * User Name, password, integration key **Note:** this is the preferred option since is provides the highest level of protection. Where the User Name is the API User Name retrieved from the Credential Login() function, the password is the encrypted password retrieved from the AccountManagement GetEncryptedPassword() function, and the integration key is the key provided by Docusign. * User Name, password, integration key Where the User Name is the API User Name retrieved from the Credential Login() function, the password is in clear text, and the integration key is the key provided by Docusign. * User Name, password, integration key Where the User Name is the user’s email login, the password is in clear text, and the integration key is the key provided by Docusign. Note that when using the HTTP Header form of authentication, the header variable name is: X-Docusign-Authentication. One way to provide the HTTP authentication header is to create a subclass from the Web Service and override the GetWebRequest method, as shown in the following example. **`Example HTTP header`** ```csharp title="Example HTTP header" namespace DSAPI { // override of web service interface is required to insert the HTTP header authentication. public class DocuSignAcctMgmtService: DSAPI_AcctMgmtWebService.AccountManagementService { private string myDSUserId = ""; private string myDSPassword = ""; private string myDSIntegrationKey = ""; public string UserName { get { return myDSUserId; } set { myDSUserId = value; } } public string Password { get { return myDSPassword; } set { myDSPassword = value; } } public string IntegrationKey { get { return myDSIntegrationKey; } set { myDSIntegrationKey = value; } } protected override System.Net.WebRequest GetWebRequest(Uri uri) { System.Net.HttpWebRequest r = base.GetWebRequest(uri) as System.Net.HttpWebRequest; r.Headers.Add("X-DocuSign-Authentication", string.Format(" < DocuSignCredentials > < Username > YOUR USER EMAIL OR ID GOES HERE < /Username> < Password > YOUR USER PASSWORD GOES HERE < /Password> < IntegratorKey > YOUR INTEGRATION KEY GOES HERE < /IntegratorKey> < / DocuSignCredentials > ", UserName, Password, IntegrationKey)); return r; } } } ``` ## SOAP header authentication For the WS-Security UsernameToken, the values for the UsernameToken elements can be the same as those used for the HTTP header values. **`Example Username token`** ```java title="Example Username token" (wsu:Created)2006-01-02T21:26:04Z (wsu:Expires)2006-01-02T21:31:04Z (wsse:Username)caa26663-927b-4800-bfdf-d115d1c72f20 password (wsse:Nonce)RumCR4p6U4a7hiX9lUlGWA== (wsu:Created)2006-01-02T21:26:04Z ``` **`Example PHP HTTP header`** ```php title="Example PHP HTTP header" $am_api_endpoint = "https://demo.docusign.net/api/3.0/accountmanagement.asmx"; $am_api_wsdl = "api/AccountManagementService.wsdl"; // build credential xml to add to http header $ds_auth = " < DocuSignCredentials > < Username > " . $UserID . " < /Username> < Password > " . "$Password < /Password> < IntegrationKey > " . $IntegrationsKey . " < /IntegrationKey> < /DocuSignCredentials> "; $ctxStream = stream_context_create(array( 'http' => array( 'method' => "GET", 'header' => "X-DocuSign-Authentication: ".$ds_auth. "\r\n"))); $am_api_options = array( 'protocol_version' => "1.0", 'trace' => true, 'stream_context' => $ctxStream); $am_api = new AccountManagementService($am_api_wsdl, $am_api_options); ``` ## Docs - [App Password authentication](https://developers.docusign.com/docs/esign-soap-api/esign101/auth/app-password-authentication.md) - [Optional authentication mechanism: XML signature](https://developers.docusign.com/docs/esign-soap-api/esign101/auth/xml-signature.md) - [Send On Behalf Of functionality](https://developers.docusign.com/docs/esign-soap-api/esign101/auth/send-on-behalf-of.md) - [Using encrypted passwords in SOAP](https://developers.docusign.com/docs/esign-soap-api/esign101/auth/encrypted-passwords.md)