public string RequestRecipientToken(
     DocuSignWeb.Recipient recipient,
     DocuSignWeb.RequestRecipientTokenAuthenticationAssertion authenticationAssertion,
     DocuSignWeb.RequestRecipientTokenClientURLs clientURLs)
 {
     Debug.Assert(String.IsNullOrEmpty(_envelopeId) == false);
     DocuSignWeb.APIServiceSoap apiService = CreateApiProxy(_accountCredentials);
     return(apiService.RequestRecipientToken(_envelopeId, recipient.CaptiveInfo.ClientUserId,
                                             recipient.UserName, recipient.Email, authenticationAssertion, clientURLs));
 }
        public static DocuSignWeb.RequestRecipientTokenAuthenticationAssertion CreateAssertion()
        {
            DocuSignWeb.RequestRecipientTokenAuthenticationAssertion assert = new DocuSignWeb.RequestRecipientTokenAuthenticationAssertion();
            //Normally, the AssertionID would reflect back to some identifiable authentication instance.
            //In this demo, however, we just use the timestamp

            //ToDo: try catch.  check for auth instant null, set to now.
            assert.AssertionID           = System.DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture);
            assert.AuthenticationInstant = System.DateTime.Now;
            assert.AuthenticationMethod  = DocuSignWeb.RequestRecipientTokenAuthenticationAssertionAuthenticationMethod.Password;
            assert.SecurityDomain        = "dsx.test";
            return(assert);
        }
        public void RequestRecipientTokenTest()
        {
            // Create and send an envelope
            DocuSignWeb.Envelope envelope = HeartbeatTests.CreateBasicEnvelope(_accountId, "request recipient token test");
            envelope = HeartbeatTests.CreateEnvelopeWithDocumentAndTabs(envelope);

            // Need to specify captive info for these recipients
            envelope.Recipients[0].CaptiveInfo = new DocuSignWeb.RecipientCaptiveInfo();
            envelope.Recipients[0].CaptiveInfo.ClientUserId = "User1";

            DocuSignWeb.EnvelopeStatus status = _apiClient.CreateAndSendEnvelope(envelope);
            envelopeIDs.Add(status.EnvelopeID);

            // Construct the recipient token authentication assertion
            // Specify ID, start time, method and domain
            DocuSignWeb.RequestRecipientTokenAuthenticationAssertion assertion = new DocuSignWeb.RequestRecipientTokenAuthenticationAssertion();
            assertion.AssertionID = new Guid().ToString();
            assertion.AuthenticationInstant = DateTime.Now;
            assertion.AuthenticationMethod = DocuSignWeb.RequestRecipientTokenAuthenticationAssertionAuthenticationMethod.Password;
            assertion.SecurityDomain = "Request Recipient Token Test";

            // Construct the URLs based on username
            DocuSignWeb.Recipient recipient = envelope.Recipients[0];
            DocuSignWeb.RequestRecipientTokenClientURLs urls = new DocuSignWeb.RequestRecipientTokenClientURLs();
            // TODO: replace urlBase with your own test url
            String urlBase = "http://127.0.0.1/";
            urls.OnSigningComplete = urlBase + "?event=SignComplete&uname=" + recipient.UserName;
            urls.OnViewingComplete = urlBase + "?event=ViewComplete&uname=" + recipient.UserName;
            urls.OnCancel = urlBase + "?event=Cancel&uname=" + recipient.UserName;
            urls.OnDecline = urlBase + "?event=Decline&uname=" + recipient.UserName;
            urls.OnSessionTimeout = urlBase + "?event=Timeout&uname=" + recipient.UserName;
            urls.OnTTLExpired = urlBase + "?event=TTLExpired&uname=" + recipient.UserName;
            urls.OnIdCheckFailed = urlBase + "?event=IDCheck&uname=" + recipient.UserName;
            urls.OnAccessCodeFailed = urlBase + "?event=AccessCode&uname=" + recipient.UserName;
            urls.OnException = urlBase + "?event=Exception&uname=" + recipient.UserName;
            
            // Request the token for a specific recipient
            String token = _apiClient.RequestRecipientToken(status.EnvelopeID, recipient.CaptiveInfo.ClientUserId,
                                                            recipient.UserName, recipient.Email, assertion, urls);

            // Confirm that we got a return token
            Assert.IsNotNullOrEmpty(token);
            Console.WriteLine("Recipient token is {0}", token);
        }
        public static DocuSignWeb.RequestRecipientTokenAuthenticationAssertion CreateAssertion()
        {
            DocuSignWeb.RequestRecipientTokenAuthenticationAssertion assert = new DocuSignWeb.RequestRecipientTokenAuthenticationAssertion();
            //Normally, the AssertionID would reflect back to some identifiable authentication instance.
            //In this demo, however, we just use the timestamp

            //ToDo: try catch.  check for auth instant null, set to now.
            assert.AssertionID = System.DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture);
            assert.AuthenticationInstant = System.DateTime.Now;
            assert.AuthenticationMethod = DocuSignWeb.RequestRecipientTokenAuthenticationAssertionAuthenticationMethod.Password;
            assert.SecurityDomain = "dsx.test";
            return assert;
        }