2016-06-01 1 views
1

Для людей, которые работают с настольными приложениями, как они обрабатывают oauth2 потоки для сторонних служб, которым нужен URL-адрес перенаправления?Как перенаправить URL-адрес oauth2 для настольных приложений?

Я хотел бы пройти аутентификацию пользователей через вход пользователя oauth2 от Discord. Но я работаю над настольным приложением, за которым не работает webservice.

Я прочитал о схеме переадресации, которая выглядит как,

urn:ietf:wg:oauth:2.0:oob

Но диссонанс говорит, что это не соответствие Перенаправление URL после входа в систему через OAuth2.

+0

Я думаю, что вам нужно разработать серверное приложение для входа в oauth2. Фактически Oauth2 сделал для интернет-приложений, которые использовали указанный URL для доступа. Настольное приложение не работает таким образом, поэтому вы не можете интегрировать Oauth2. – Linh

ответ

2

Если вы используете приложение на рабочем столе у ​​вас есть несколько вариантов:

  1. Вы можете начать веб-сервер локально и использовать localhost в redirectUri. Недостатком является то, что вам, как правило, необходимо также указать номер порта в списке разрешенных перенаправлений Uris, и вам не обязательно будет знать, доступен ли определенный порт на клиенте.
  2. urn:ietf:wg:oauth:2.0:oob указывает, что сервер не перенаправляет пользователя вообще, а выводит код в заголовке окна браузера. Если у вас есть соответствующее разрешение на чтение других названий окон, вы можете автоматически определить изменения там. Также код обычно отображается пользователю, поэтому в качестве резервной копии он может скопировать & вставить код в ваше приложение. Однако ваш сервис может не поддерживать это.
  3. Установите веб-сервис, который пересылает вам токен. В основном вы настраиваете веб-сервис, с которым выполняется аутентификация вашего приложения, и что веб-сервис возвращает URL-адрес службы проверки подлинности, включая соответствующий state, к которому вы отправляете пользователя. Затем служба проверки подлинности отправит вашего пользователя обратно в ваш веб-сервис, который снова сообщает код вашему приложению, например. посредством длительного опроса, веб-сокетов или реального TCP-соединения, которое остается открытым в течение всего процесса. Обратите внимание, что webservice будет нуждаться в тщательном проектировании, чтобы служба не злоупотреблялась со стороны третьих сторон. Поскольку вы не можете технически аутентифицировать настольное приложение против веб-службы, вы не можете запретить другим приложениям вызывать ваш веб-сервис, но вы можете представить пользователю некоторую информацию на экране согласия, которая помогает пользователям определить, был ли запрос законным или нет.
+0

Итак, если я хочу перенаправить приложение iOS/OS X (например, myapp: // oauth/callback), мне нужен вебсервис в качестве прокси для перенаправления на этот URI? –