Я пытаюсь подключиться к Freshdesk с помощью OAuth 2.0 для единого входа из своего приложения. Мое приложение выступает в качестве собственного поставщика удостоверений OAuth. Я настроил свой URL-адрес авторизации на Freshdesk — назовем его https://www.myWebApp.com/auth
:
Итак, теперь в целях тестирования я перехожу к URL-адресу, который служба поддержки Freshdesk предоставила пользователю, чтобы инициировать процесс единого входа:
... и я вижу красивый экран входа в систему в стиле sso:
Я ввожу правильный адрес электронной почты и пароль для одного из пользователей моего сайта и нажимаю «Войти».
Теперь на вкладке сети Chrome я ожидаю, что Freshdesk попытается пропинговать мой URL-адрес авторизации. Но я не знаю. Я вижу это:
При загрузке моя страница авторизации (https://myWebApp.com/auth
) пингует мой сервер, который выдает сообщение console.info()
, а в журналах моего сервера нет такого сообщения в журнале консоли, так что Freshdesk, похоже, вообще не пингует мою страницу авторизации.
Что мешает Freshdesk проверить мою страницу авторизации должным образом?
Я не делаю. Изображение в моем сообщении показывает весь диалог входа в систему.
Я действительно изо всех сил пытаюсь заставить SSO работать на моей стороне - вы когда-нибудь разбирали свой SSO?
У меня это происходит на моей стороне, поэтому, если вы все еще работаете над этим, дайте мне знать, и я постараюсь помочь.
Привет, @MhluziBhaka, я все еще пытаюсь добиться этого и буду очень признателен за помощь!
Оки, сочиняю ответ - но просто для интереса, что ты используешь для oauth? Вы сами пишете или используете что-то вроде laravel-passport? Кроме того, пользователи, которым вы хотите предоставить доступ к агентам или контактам freshdesk?
Потрясающий! Я пишу это сам, и мое приложение также является собственным поставщиком удостоверений OAuth. Пожалуйста, дайте мне знать, если я могу предоставить любую дополнительную информацию!
Круто, пользователи, которым вы хотите предоставить доступ к агентам или контактам freshdesk?
Они контакты.
Вероятно, здесь есть немало того, что у вас уже есть, но я просто добавляю его для полноты картины.
Зашел в бэкэнд и на страницу безопасности для контактов
https://stackoverflow.myfreshworks.com/security/contacts
[stackoverflow == your site :) ]
вам нужно будет создать пользовательскую политику, если у вас ее еще нет (она отличается от политики для агентов)
И для этого настройте систему единого входа с помощью Oauth 2.0.
Затем, если у вас настроен хотя бы один SSO, ваш логин (по адресу https://stackoverflow.freshdesk.com/support/login) должен выглядеть так:
Где (1) теперь появляется. Это будет ссылка для проверки связи с вашим сервером через URL-адреса, которые вы настроили для SSO:
Если для ваших контактов настроена только одна система единого входа, эта ссылка (1) должна завершить процесс входа напрямую, а затем вы должны войти в Freshdesk как конкретный контакт.
Если у вас было настроено два варианта SSO; например:
.. когда вы щелкнули ссылку (1) на странице https://stackoverflow.freshdesk.com/support/login, вы должны быть перенаправлены на страницу с этими двумя вариантами:
URL-адрес этой страницы выглядит примерно так (параметры для вас будут другими):
https://stackoverflow.myfreshworks.com/login
?redirect_uri=https://stackoverflow.freshdesk.com/freshid/customer_authorize_callback
&client_id=14416083630394368&slug=6117145232763
Я предполагаю, что вы могли бы использовать это как прямую ссылку на портал на вашем основном сайте.
Если у вас настроен только один параметр SSO, вы сможете перейти непосредственно к ссылке, как указано выше, а затем увидеть:
что, вероятно, то, к чему вы стремитесь.
Я изменил название этой кнопки (Войти с контактами SSO), просто чтобы убедиться, что я использую правильную кнопку, и чтобы отличить ее от входа в систему для агентов. Вы можете изменить текст в разделе «Дополнительные параметры» при настройке единого входа:
Надеюсь, это поможет вам на этом пути — если у вас есть какие-либо другие вопросы по этому вопросу, пишите их в комментариях.
Я не могу дождаться, чтобы справиться с этим! Я дам вам знать, как это происходит.
Это очень помогает! Вот вопрос. Когда пользователь щелкает ссылку (1) на вашем рисунке, Freshdesk пингует конечную точку аутентификации на моем сервере. Как в таком случае мой сервер может определить, какой пользователь пытается войти в Freshdesk? Должен ли я кодировать идентификатор пользователя в ссылке, которую пользователь нажимает на моем сайте, что приводит его или ее на страницу Freshdesk, где находится ссылка (1)?
Я вижу, что когда мое приложение отправляет моего пользователя на страницу входа FreshDesk, мое приложение включает переменную state
. И когда я использую ссылку cicks (1), те же state
данные возвращаются на мой сервер. Нужно ли мне хранить идентификатор пользователя в данных state
, возможно, в зашифрованном виде, чтобы, когда пользователь нажимает ссылку (1), мой сервер мог видеть, что это за пользователь?
Хорошо, я изучил и вижу, что state
— это случайная строка. Когда он возвращается из FreshDesk, клиент или сервер могут проверить его подлинность. Если я хочу, чтобы сервер сделал это, мне сначала нужно изменить базу данных, чтобы сохранить значение state
и назвать связанного пользователя.
Да, это что-то вроде чечетки. Вы будете отправлять первоначальный запрос в Freshdesk со своего сайта как вошедший в систему пользователь, поэтому только в токене доступа (после утверждения) вы будете отправлять идентификатор пользователя в Freshdesk. Затем Freshdesk отправляет запрос на ваш URL-адрес userinfo для получения сведений о пользователе.
Потрясающий. Это идет хорошо. Я отправляю состояние для входа в систему Freshdesk, и когда я нажимаю ссылку (1), Freshdesk успешно достигает конечной точки моего приложения, отправляя состояние обратно для проверки.
не могли бы вы взглянуть на эту связанную проблему, которую я только что опубликовал в SO? Я получаю сообщение об ошибке CORS при вызове Freshdesk redirect_uri. :) stackoverflow.com/questions/66129115/…
На этом экране входа вы видите еще одну кнопку для входа через SSO?