Автоматическая авторизация в API - больше не возможно? - PullRequest
0 голосов
/ 14 ноября 2018

Краткое исследование показывает, что когда-то существовал режим авторизации, известный как SOBO (например, см. функция docusign send от имени ), который я считаю полезным в сценарии, когда приложение связывает запросы подписи не с вошедший в систему пользователь, но с другим пользователем. Однако я не могу найти упоминания об этом в текущей документации; напротив, в документации четко сказано, что поддерживаются только 3 типа грантов, и все три связаны с тем, что олицетворенный пользователь активно выражает свое согласие. Невозможно просто отправить учетные данные пользователя или, наоборот, дать пользователю возможность выразить свое согласие только один раз на странице администрирования docusign, а затем повторно использовать это согласие, скажем, на один год или навсегда. Или другой способ избежать взаимодействия с конечным пользователем.

Кроме того, требование использования URI перенаправления для отправки данных продолжения подразумевает, что нужно либо использовать локальное решение, либо сделать свое приложение видимым в Интернете. Нет способа использовать общедоступный сервис docusign с локальным приложением, верно?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Я знаю, что на этот вопрос уже был дан ответ, но я опубликую этот ответ здесь на тот случай, если кому-то еще нужно сделать это. Этот метод не требует согласия пользователя. Ниже приведен 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":""
    }
  ]
}

На этом этапе вам может понадобиться сохранить baseUrl и accountId, которые будут возвращены. Для 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
0 голосов
/ 15 ноября 2018

DocuSign препятствует аутентификации в Legacy Header, поскольку требует, чтобы ваша интеграция поддерживала простой текстовый пароль пользователя.Он также не может поддерживать учетные записи, использующие однократную или двухфакторную аутентификацию.Долгосрочный план, вероятно, в конечном итоге полностью отменит его, но для этого нет сроков.Документация была удалена, но интеграции, которые использовали ее в прошлом, все еще могут это сделать.

JWT auth является эквивалентной заменой.С индивидуального согласия пользователь предоставляет доступ к интеграции один раз.Если пользователь не отменит это согласие, интеграция сможет генерировать токены доступа, чтобы действовать в качестве пользователя на неопределенный срок - согласие JWT не истекает.

Если у вас есть организация с заявленным доменом, администратор организации может предоставитьполное согласие разрешить интеграции действовать от имени любого пользователя в этом домене.Если вы хотите дать согласие на ключ интегратора, принадлежащий вашей организации, это так же просто, как перейти к Org Admin> Приложения> Авторизовать приложение.Предоставление согласия стороннему приложению аналогично рабочему процессу «Индивидуальное согласие», но имеет дополнительные области действия, как описано здесь: https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent

Обратите внимание, что в то время как аутентификация JWT требует регистрации URI перенаправления, интеграция не 'Обязательно нужно «поймать» пользователя после того, как он дал согласие.Несмотря на то, что рекомендуется, чтобы целевая страница заставляла пользователя двигаться вперед в рабочем процессе, допустимо указать ваш URI перенаправления на https://www.example.com, предоставить согласие, а затем сгенерировать токен доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...