Coinbase oauth авторизация возвращает html, как интегрироваться с моим веб-приложением

Итак, я создаю веб-приложение, которое работает с coinbase. Интерфейс - это стандартная статическая страница с html и jquery, это очень ванильно. Серверная часть - это отдельное веб-приложение, созданное с помощью Spring 5 и имеющее кучу веб-сервисов RESTful.

Я захожу в свой login.html и вхожу в систему. Это означает, что я отправляю имя пользователя / пароль обратно в свой логин Spring Controller, и я получаю токен доступа, отправленный обратно в пользовательский интерфейс. Я помещаю это в файл cookie, а затем перезагружаю новую страницу с большой толстой кнопкой авторизации на этой странице.

Эта кнопка выполняет AJAX-вызов моего контроллера Spring RESTful, передавая токен, поскольку я хотел сделать эту конечную точку безопасной, которая отлично работает.

На внутренней стороне (или промежуточном программном обеспечении) я делаю RESTful-вызов Coinbase, чтобы начать процесс аутентификации Oauth2. Я читаю свой идентификатор клиента из файла свойств, передаю redirectURI и состояние. Все это отлично работает, доходит до Coinbase, а ответ - HTML. Я передаю его своему клиенту, интерфейсу, и у меня есть этот HTML-код, который является страницей авторизации Coinbase.

Теперь вот где это становится рискованным ... Я бэкенд-человек, поэтому я могу без проблем сделать этот RESTful-вызов на бэкэнде. Я получаю HTML-код, который должен быть страницей РАЗРЕШЕНИЯ, чтобы пользователь мог разрешить использование моего веб-приложения со своей учетной записью в coinbase. Я получаю HTML, и теперь я не понимаю, как правильно отобразить этот html на моей странице или на новой странице. Это мой недостаток знаний javascript и jquery.

Код AJAX в моем authorize.js выглядит так:

$.ajax({
        url : 'http://localhost:8080/myapp-be/api/coinbase/authorization',
        headers : {'mytoken' : mytoken},
        dataType: 'html',
        cache: false,
           success: function(response) {
               $("html").html(response);
           }
    });

Это правильный путь?

Я абсолютно могу принять вызов Coinbase, поместить его в свой браузер, и он легко откроет диалоговое окно авторизации Coinbase. Если я разрешаю, вводя свое имя пользователя / пароль, меня отправляют на страницу обратного вызова, которую я передал как uri перенаправления обратного вызова.

Но, насколько я понимаю, мы не хотели раскрывать идентификатор клиента кому бы то ни было. Вот почему мой бэкэнд делает это, а мы просто возвращаем HTML. Итак, я задержан здесь. С моим текущим кодом я получаю много ошибок Javascript, и я просто знаю, что это не выход. У меня много проблем с CORS, и когда я пытаюсь авторизоваться, я получаю сообщение об ошибке, что не удается перейти на нужную страницу.

Как правильно вызвать API авторизации Coinbase. Их страница документации: https://developers.coinbase.com/docs/wallet/coinbase-connect/integrating Показано на шаге 1:

GET 
https://www.coinbase.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URL&state=SECURE_RANDOM&scope=wallet:accounts:read

Итак, к сожалению, я немного не понимаю, как лучше всего решить эту проблему. Либо я делаю этот вызов GET от клиента, раскрывающего идентификатор клиента, если это нормально? Или я могу найти правильный способ отобразить возвращаемый HTML-код для страницы авторизации Coinbase?

Спасибо за помощь!


person tjholmes66    schedule 25.11.2019    source источник


Ответы (1)


Итак, прошло очень много времени с тех пор, как мне приходилось выполнять какую-либо работу с пользовательским интерфейсом. Мне никогда не приходилось беспокоиться о проблемах с кросс-скриптингом или iframe, а также о проблемах безопасности, связанных с front = end (UI).

Из того, что я собираю, перетаскивание HTML со стороннего веб-сайта в div или iframe на моем веб-сайте - не лучший план. Я могу вам сказать, что, хотя я и вставил HTML-код на веб-страницу своего сайта, было множество ошибок javascript и проблем с CORS.

В конечном итоге мой вызов ajax для моего промежуточного программного обеспечения был изменен, чтобы просто вернуть URL-адрес авторизации Coinbase. Простое перенаправление Windows, и я оказался на сайте coinbase, как и должно быть. Как только я авторизовался, меня перенаправили обратно на мою ссылку перенаправления, которую я сказал Coinbase сделать.

Итак, получение ссылки и простое перенаправление сработали. Загрузка HTML со стороннего сайта на мои веб-страницы не выполнялась. Урок выучен!

Спасибо! Надеюсь, это поможет кому-то другому.

person tjholmes66    schedule 27.11.2019