Docusign PARTNER_AUTHENTICATION_FAILED Указанный ключ интегратора не найден или отключен - PullRequest
0 голосов
/ 27 августа 2018

У меня есть веб-приложение, которое я пытаюсь интегрировать с Docusign.Я использую Java-клиент Docusign.Я начал с использования OAuth2, но затем выяснил, что срок действия маркера обновления истекает, и из того, что я читаю, пользователь должен будет снова пройти аутентификацию (взаимодействие с пользователем каждый раз).Обычно обновление не истекает, но токен доступа.Я правильно читаю?

Я хочу, чтобы пользователь прошел аутентификацию один раз и чтобы приложение могло использовать этот токен, не запрашивая у пользователя доступ снова.Поэтому я начал изучать JWT и не могу найти необходимую документацию.

Используя JWT, я могу получить информацию о пользователе для учетной записи.Но не могу позвонить по шаблонам.

apiClient.configureJWTAuthorizationFlow(folder + "509.cert", folder 
+ "509.ppk", "account-d.docusign.com", IntegratorKey, account, 3600 );

com.docusign.esign.client.auth.OAuth.UserInfo userInfo = 
apiClient.getUserInfo(apiClient.getAccessToken());
// **** This prints fine *****
System.out.println("UserInfoxxx: " + userInfo);

// **** Verified the url is demo *****  
apiClient.setBasePath(userInfo.getAccounts().get(0).getBaseUri() + 
"/restapi");
com.docusign.esign.api.TemplatesApi api = new 
com.docusign.esign.api.TemplatesApi(apiClient);

try {
    com.docusign.esign.model.EnvelopeTemplateResults resp = 
    api.listTemplates(account);
    for ( com.docusign.esign.model.EnvelopeTemplateResult template : 
resp.getEnvelopeTemplates() )
    {
            out.println("X " + template.getDescription() + " " + 
template.getName() );
            }
        } 
        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
https://demo.docusign.net/restapi
com.docusign.esign.client.ApiException: Error while requesting server, 
received a non successful HTTP code 400 with response Body: '{
"errorCode": "PARTNER_AUTHENTICATION_FAILED",
"message": "The specified Integrator Key was not found or is disabled.  
Invalid account specified for user."}'
at com.docusign.esign.client.ApiClient.invokeAPI(ApiClient.java:929)
    at   
com.docusign.esign.api.TemplatesApi.listTemplates(TemplatesApi.java:2471)
    at 
com.docusign.esign.api.TemplatesApi.listTemplates(TemplatesApi.java:2409)

Я использую свой ключ интегратора (идентификатор клиента). Любые предложения или советы?

[Обновить] Да, я здесь, мой поток.

Отправьте пользователя на

https://account-d.docusign.com/oauth/auth?response_type=code&scope=signature%20impersonation&client_id=" + IntegratorKey + "&redirect_uri=" +     redirectUri + "&state=" + state;

При перенаправлении

String code = request.getParameter("code");
com.docusign.esign.client.auth.OAuth.OAuthToken oAuthToken = apiClient.generateAccessToken(IntegratorKey, ClientSecret, code);

System.out.println("OAuthToken: " + oAuthToken.getAccessToken() );

com.docusign.esign.client.auth.OAuth.UserInfo userInfo = apiClient.getUserInfo(oAuthToken.getAccessToken());

String folder = com.n.util.Settings.getInstance().getRealPath("/") + "META-INF/cert/";
apiClient.configureJWTAuthorizationFlow(folder + "509.cert", folder + "509.ppk", "account-d.docusign.com", IntegratorKey,             userInfo.getSub(), oAuthToken.getExpiresIn() );

Затем я сохраню userInfo.getSub () и использую его в других запросах.Я также попробовал идентификатор учетной записи.

1 Ответ

0 голосов
/ 28 августа 2018

Re: Я начал с пути использования OAuth2, но затем выяснил, что срок действия маркера обновления истекает, и из того, что я читаю, пользователь должен будет снова пройти аутентификацию (взаимодействие с пользователем каждый раз).

Обычно срок обновления не истекает, а токен доступа -.

Я правильно читаю?

Не полностью. Пожалуйста, используйте код авторизации, как вы изначально планировали.

Вот совок:если вы запрашиваете область действия extended (в дополнение к области действия signature), то возвращенный токен обновления будет полезен для еще 30 дней каждый раз, когда ваше приложение использует операцию обновления.

Пример:

День 1: Человек входит в DocuSign с использованием кода авторизации Предоставление потока через ваше приложение.Запрос области действия: signature%20extended Ваше приложение получает от DocuSign товар Access Token сроком на 8 часов, а Refresh Token сроком на 30 дней.Ваше приложение хранит токен обновления в энергонезависимой памяти.

День 23: Человек снова хочет использовать ваше приложение с DocuSign.Ваше приложение использует сохраненный токен, чтобы сделать запрос на обновление токена для DocuSign.(Взаимодействие с человеком не требуется.) Ваше приложение получает обратно токен доступа, действительный в течение 8 часов, и новый Refresh Token, действительный в течение 30 дней с этого момента (до дня 53).Ваше приложение хранит (заменяет) токен обновления в энергонезависимой памяти.

Результат Пока ваше приложение использует / обновляет токен обновления не реже одного раза в 30 дней, оно всегда будет иметьтокен обновления DocuSign можно использовать для получения токена доступа без участия человека.

Предупреждение Проблема безопасности, инициированная клиентом DocuSign или самим DocuSign, может привести к обновлению и / илиили токен доступа больше не действителен и, следовательно, требует, чтобы пользователь вручную прошел аутентификацию в DocuSign.Но это может быть неожиданным событием, которое также повлияет на токены доступа, полученные с помощью потока аутентификации JWT.

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

В связи с вашей проблемой с потоком JWT: Попробуйте наш новый пример Java JWT , чтобы увидетьесли это поможет.

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