OpenID Connect - использование IdentityServer для единого входа между WinForms и веб-приложением

У меня настроен Thinktecture IdentityServer, и у меня есть два доверенных клиентских приложения, приложение WinForms и веб-приложение, и я хочу реализовать единый вход между ними обоими.

Пользователь сначала откроет настольное приложение, на котором есть страница входа в систему, которая аутентифицируется на сервере идентификации.

Настольное приложение будет включать в себя некоторые сгенерированные веб-ссылки, при нажатии на которые открывается новое окно браузера в защищенную область веб-приложения, требующую аутентификации, однако при нажатии на эти ссылки я не хочу, чтобы пользователю приходилось снова входить в систему, поскольку они уже один раз аутентифицирован через настольное приложение.

Я изо всех сил пытаюсь понять, какой из потоков может этого достичь.

Какие механизмы, если таковые имеются, предоставляются OpenID connect или Thinktecture IdentityServer, которые могут облегчить этот процесс?


person Matt B    schedule 06.03.2015    source источник
comment
Вы нашли решение?   -  person Alf Kåre Lefdal    schedule 20.07.2015
comment
Не тот, который нас полностью устраивал. Ни один из потоков OAuth не охватывал этот сценарий, поэтому в конце концов мы создали специальное решение, в котором приложение Windows запрашивало одноразовый токен GUID с TTL в 10 секунд. Затем этот токен можно передать в строке запроса в приложение браузера, и после проверки токена мы аутентифицируем пользователя. Поскольку наше программное обеспечение устанавливается только во внутренних закрытых сетях, мы сочли это приемлемым решением.   -  person Matt B    schedule 02.11.2015


Ответы (1)


Нет никаких готовых механизмов, поскольку SSO достигается за счет установки файлов cookie в пользовательском агенте (UA). Итак, если пользователь аутентифицируется в веб-просмотре в вашем приложении winforms, а затем запускает браузер следующим образом

System.Diagnostics.Process.Start("http://www.website.com");

чтобы открыть веб-приложение, это явно не сработает, потому что это не тот же UA.

Тем не менее, если вы используете тот же веб-просмотр для открытия веб-приложения, вы можете этого добиться.

person user2457870    schedule 23.06.2016