API的无人参与授权-不再可能?

时间:2018-11-14 16:02:04

标签: docusignapi

简短的调查显示,曾经存在一种称为SOBO的授权模式(例如,请参见docusign send on behalf functionality),在应用程序将签名请求与登录用户不相关但与登录用户相关联的情况下,该模式很有用。与其他用户。但是,我在当前文档中找不到任何提及。相反,文档清楚地表明仅支持三种赠款类型,而这三种都涉及假冒用户积极表达其同意。无法仅发送用户凭据,或者让用户仅在docusign管理员页面上表达一次他的同意,然后将该同意再使用一年或永久。或其他避免最终用户互动的方式。

此外,使用重定向URI发送回连续数据的要求意味着必须要么使用本地解决方案,要么使自己的应用程序在Internet上可见。无法在本地应用程序中使用公共文档服务,对吗?

2 个答案:

答案 0 :(得分:1)

DocuSign不鼓励使用“旧标题”身份验证,因为它要求您进行集成才能保留用户的纯文本密码。它还不支持利用单点登录或两因素身份验证的帐户。长期计划很可能最终将其全部淘汰,但是没有时间表。文档已经淘汰,但过去使用过的集成仍然可以使用。

JWT auth是等效的替换。经个人同意,用户一次授予集成访问权限。除非用户撤销该同意,否则集成将能够生成访问令牌以无限期地充当用户-JWT同意不会过期。

如果您有一个拥有所有权域的组织,则组织管理员可以授予一揽子同意,以允许集成充当该域下的任何用户。如果您想同意组织拥有的集成商密钥,则只需导航至组织管理>应用程序>授权应用程序即可。向第三方应用程序授予同意类似于“个人同意”工作流程,但具有此处记录的其他范围:https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent

请注意,尽管JWT auth确实需要注册重定向URI,但是集成在授予用户同意后并不一定需要“捕获”用户。虽然建议着陆页触发用户在工作流程中前进,但是可以将您的重定向URI指向https://www.example.com,同意,然后生成访问令牌。

答案 1 :(得分:-1)

我知道这个问题已经回答了,但是我会在这里发布这个答案,以防万一仍然有人需要这样做。此方法不需要用户的同意。下面是Node.js / JS,但是可以使用下面的基础知识轻松地翻译成任何语言。

// set default authentication for DocuSign; pulls data from this account
var auth = {
  'Username': '(user email)',
  'Password': '(user password)',
  'IntegratorKey': '(api key found in admin)',
};
var options = {
  'uri': 'https://www.docusign.net/restapi/v2/login_information',
  'method': 'GET',
  'body': '',
  'headers': {
    'Content-Type': 'application/json',
    // turns the auth object into JSON
    'X-DocuSign-Authentication': JSON.stringify(auth)
  }
};
// send off your request using the options above

以上返回响应:

{
  "loginAccounts": [
    {
      "name":"Your Company Name",
      "accountId":"0000000",
      "baseUrl":"https://{your_subdomain}.docusign.net/restapi/v2/accounts/0000000",
      "isDefault":"true",
      "userName":"User's Name",
      "userId":"(36 character UUID)",
      "email":"user@example.com",
      "siteDescription":""
    }
  ]
}

这时,您可能必须保存返回的baseUrlaccountId。对于baseUrl,您只需要保存子域和域url(https://{your_subdomain}.docusign.net),而不是此后的url参数。

现在,您可以有足够的信息来提出请求。以下示例请求将提取此帐户下的所有模板。

var options = {
  'uri': baseUri+'/accounts/'+accountId+'/templates',
  'method': 'GET',
  'body': '',
  'headers': {
    'Content-Type': 'application/json',
    // turns the auth object into JSON
    'X-DocuSign-Authentication': JSON.stringify(auth)
  }
};
// send off your request using the options above