Общий вход для нескольких приложений WinRT

У меня есть два приложения WinRT, которые запрашивают одну и ту же службу входа для сеанса. В каждом приложении есть глобальный HttpClient (вместе с контейнером cookie), который сохраняет cookie для дальнейших запросов.

В настоящее время, если пользователь входит в приложение A и открывает приложение B, ему необходимо снова войти в систему (даже если время сеанса не истекло).

Я не хочу, чтобы пользователь снова входил в систему, если он вошел в одно приложение. Как я могу этого добиться? Как я могу поделиться этим объектом HttpClient между приложениями?

Изменить: сеансы обслуживаются с помощью файлов cookie. Как я могу сохранить файлы cookie (вместе со значением тайм-аута) на стороне клиента таким образом, чтобы к ним могли получить доступ другие приложения?


person Raghavendra    schedule 04.08.2013    source источник


Ответы (2)


Будет сложно делиться файлами cookie / кредитами между несколькими приложениями. Одна вещь, которую вы можете сделать, - это изучить эту информацию с помощью CredentialLocker. В Windows 8.1, если вы используете стандартные брокеры проверки подлинности, учетная информация может быть сохранена для поставщика (согласие пользователя), чтобы упростить для AppB вход во второй раз (не автоматически, но будет предварительно заполнять кредиты)

person Tim Heuer    schedule 05.08.2013
comment
Возможно, вы могли бы объединить эти два в одно приложение с двумя пользовательскими интерфейсами и двумя плитками начального экрана, как я полагаю, microsoft.windowscommunicationsapps (Calendar / Mail / People apps). - person Filip Skakun; 07.08.2013

Используйте механизм cookie, например http://en.wikipedia.org/wiki/HTTP_cookie

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

Каждый раз, когда пользователь пытается войти в систему, проверяйте реестр на наличие записи Cookie, и если она найдена, отправьте на сервер свое имя пользователя и GUID, если GUID действителен, а срок действия cookie не истек, разрешите вход.

person Nahum    schedule 04.08.2013
comment
В моей организации большинство пользователей не имеют прав администратора (не могут ничего установить или получить доступ к реестру). В таких ситуациях приложение по-прежнему сможет делать запись в реестре. - person Raghavendra; 04.08.2013
comment
Сессия поддерживается с помощью файлов cookie. Но как я могу поделиться этим файлом cookie между приложениями WinRT? - person Raghavendra; 04.08.2013
comment
thewindowsclub.com/cookies-folder-location-windows и один пример, но вы для этого можно использовать любой локальный файл. например c: \ temp \ MyLoginType.MyCookie - person Nahum; 04.08.2013
comment
Как я могу сделать его более безопасным? Любой желающий может создать приложение C, которое может считывать содержимое файлов cookie из локального файла. - person Raghavendra; 05.08.2013
comment
Поэтому сохраните IP / Mac-адреса компьютеров для каждого пользователя на вашем сервере. - person Nahum; 06.08.2013