Могу ли я переопределить URL обратного вызова с поддоменом для аутентификации Xero OAuth2 - PullRequest
0 голосов
/ 31 января 2020

У меня есть приложение Rails, которое обращается к Xero с помощью новой аутентификации OAuth2, где мы используем поддомен для изоляции различных организаций. например, https://domain.example.com

На сегодняшний день нам необходимо создать новое приложение Xero для каждого домена, поскольку мы должны указать URL-адрес обратного вызова для приложения, который в приведенном выше случае будет https://domain.example.com/auth/xero_oauth/callback

Можно ли зарегистрировать одно приложение в Xero с URL-адресом обратного вызова https://example.com/auth/xero_oauth/callback, а затем переопределить URL-адрес, добавив поддомен , для фазы соединения.

Я вполне уверен, что мог бы сделать это с предыдущей версией OAuth1.

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

У меня тоже есть это требование, но я не первый раз сталкиваюсь с этой проблемой с приложениями OAuth.

Я обхожу его, добавляя поддомен к параметру state, который передается в на начальный этап авторизации, и передается обратно на URI перенаправления:

$state = json_encode(['uuid' => $uuid, 'subdomain' => $subdomain]);

Затем в своем URI перенаправления я извлекаю поддомен из состояния и выполняю еще одно перенаправление на этот поддомен вместе с UUID (для выполнения Проверка CSRF).

Недостатком этого подхода является то, что состояние передается только в случае успеха; если поток OAuth обнаружит ошибку, ваш URI перенаправления не сможет определить правильный поддомен.

EDIT : Оказывается, Xero возвращает состояние независимо от успеха или ошибка:)

0 голосов
/ 31 января 2020

это интересный вариант использования. Мы уверены, что мы не разрешаем использовать подстановочные субдомены в URL-адресах обратного вызова, и ограничение составляет 3 на приложение. Но я проверю на следующей неделе! Вы создали тикет с помощью api@xero.com? Также, если вы откроете проблему в Ruby SDK, я скоро смогу попытаться разобрать ее для вас.

Подумав вслух ... возможно, можно вмешаться перед URL обратного вызова ... хотя, вероятно, это вызовет проблемы с генерацией клиента Xero, так как он должен соответствовать настройкам OAuth2.0 в / myapps. Не могли бы вы перенаправить обратно в ваш домен root только для аутентификации, а затем отправить их на их успех на субдомене?

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