当我的.net应用程序运行时,Docusign会请求登录

时间:2018-04-13 06:38:09

标签: docusignapi

我创建了一个.net MVC示例应用程序。现在当我第一次启动应用程序时,它会调用DocuSign API并给我访问代码并使用我获得的帐户ID和URL。我然后再停止运行它我需要遵循相同的程序,所以是否有任何选项来获取或验证应用程序一次。见下面的代码。注意我正在使用试用沙盒环境。

public ActionResult Index()
        {
            ApiClient apiClient = new ApiClient(RestApiUrl);
            DocuSign.eSign.Client.Configuration.Default.ApiClient = apiClient;

            //Initiate the browser session to the Authentication server
            //so the user can login.
            string accountServerAuthUrl = apiClient.GetAuthorizationUri(client_id, redirect_uri, true, stateOptional);
            System.Diagnostics.Process.Start(accountServerAuthUrl); // This always open in browser docusign login

            return View();
        }

返回网址...

[HttpGet]
        public ActionResult GetRes()
        {
            AccessCode = Request.QueryString["code"];

            // state is app-specific string that may be passed around for validation.
            StateValue = Request.QueryString["state"];

            // Signal the main test that the response has been received.
            return new HttpStatusCodeResult(200);
        }

使用代码获取帐户ID

ApiClient apiClient = new ApiClient(RestApiUrl);
            DocuSign.eSign.Client.Configuration.Default.ApiClient = apiClient;

            string accessToken = apiClient.GetOAuthToken(client_id, client_secret, true, AccessCode);

            // login call is available in the authentication api 
            AuthenticationApi authApi = new AuthenticationApi();
            LoginInformation loginInfo = authApi.Login();

            // parse the first account ID that is returned (user might belong to multiple accounts)
            AccountId = loginInfo.LoginAccounts[0].AccountId;
            BaseUri = loginInfo.LoginAccounts[0].BaseUrl;

是否有任何其他应用程序验证过程或示例代码可以帮助我。 谢谢

2 个答案:

答案 0 :(得分:1)

我假设您正在尝试使用User Application而不是Service Integration。您正在尝试的内容称为Authorization Code Grant。在Authorization Code Grant中,您需要通过打开网址向用户表示同意,一旦获得您的同意,您将使用DocuSign的OAUTH2 API中的网址返回的代码生成AccessToken和{{1} }。 RefreshToken AccessTokenshort-lived会在几个小时内完成,will expire到期后,您必须使用AccessToken生成一组新的RefreshTokenAccessTokenRefreshToken通常只有Refresh tokens来访问令牌,但他们longer lifetime。要通过尽可能长的生命周期请求刷新令牌(取决于帐户和系统安全策略),请在通过URL进行初始身份验证请求时使用do expire范围。在调用DocuSign API之前,请检查当前时间与到期时间。如果它在阈值范围内,请使用刷新令牌获取新的访问令牌。如果对刷新操作的响应是错误,则需要通过要求用户再次登录来重复初始身份验证流程。

答案 1 :(得分:0)

DocuSign API目前有两种主要的身份验证模式:

  1. 经典X-DocuSign认证w / wo SOBO(作品,日落日期未知 - 非常适合没有与用户互动的“服务”应用程序)
  2. OAuth2 - 承载令牌w / wo SOBO(Works,DocuSign推荐的方法论,对服务应用程序和开发人员来说可能很繁琐 - 无法设置它并忘记它我所知道的)
  3. 这里有两个都可以参考(感谢Amit K Bist)https://docs.docusign.com/esign/guide/authentication/auth_overview.html

    首先,您需要将名为“Big Corp”的应用程序的系统发件人帐户作为“经过身份验证的系统用户”。然后,您将发送可以“发送”的其他用户的代表(SOBO),而不是可以查看的用户。

    我不建议使用“Prod”试用帐户,请确保您使用的是“Demo Sandbox”。

    您需要打开此处讨论的SOBO功能https://docs.docusign.com/esign/guide/authentication/sobo.html

    提醒您,您可以按照此DocuSign支持文章https://support.docusign.com/guides/ndse-user-guide-api-request-logging中所述的步骤捕获API调用发布的确切JSON / SOAP请求