Получение имени пользователя с помощью SignalR с мобильными службами Azure

Я работаю над серверной мобильной службой .NET. Для аутентификации я использую Azure Active Directory. И для внешнего интерфейса приложение Windows RT. С недавним появлением SignalR в мобильных сервисах .net я решил взглянуть на него. Я быстро столкнулся с проблемой, с которой многие другие до меня сталкивались, связывая SignalR ConnectionId с аутентифицированным пользователем.

Каждый ресурс, который я нашел в Интернете, говорит об использовании Context.User.Identity.Name. Я добавил в свой концентратор атрибут Authorize, чтобы разрешать только аутентифицированные подключения. Проблема, с которой я сталкиваюсь, заключается в том, что, хотя мой пользователь вошел в Azure Active Directory, Context.User.Identity.Name всегда имеет значение null.

Context.User.Identity.IsAuthenticated это true, а Context.User.Identity.AuthenticationType это Federated.

Я что-то не правильно понимаю?


person F.A.    schedule 06.06.2014    source источник


Ответы (3)


Не уверен насчет первого вопроса, но в целом вы можете настроить способ, которым Clients.User() возвращает соединения для данного пользователя, внедрив IUserIdProvider самостоятельно и внедрив свою реализацию в SignalR. Таким образом, вы можете проверять свои запросы и извлекать из них больше информации. Если вы узнаете, какая часть запроса вам нужна (может быть, какой-то заголовок или что-то еще), вы можете использовать ее оттуда, чтобы связать с ней связанные соединения.

Проверьте это.

person Wasp    schedule 06.06.2014

Инфраструктура мобильной службы устанавливает Context.User как ServiceUser, который содержит информацию о пользователе. Например, Context.User.Id предоставляет идентификатор пользователя, а Context.User.ProviderIdentities предоставляет информацию от различных провайдеров входа, включая токен доступа.

Надеюсь это поможет,

Хенрик

person Henrik Frystyk Nielsen    schedule 08.06.2014

образец проблемы здесь. Ничего общего с SignalR в моем приложении, но я использую Azure AD. И при подключении к учетной записи Hotmail я получаю Context.User.Identity.Name как null. Не тогда, когда пользователь находится в том же домене, что и Azure Ad.

в обоих случаях это одно и то же: Context.User.Identity.IsAuthenticated — true, а Context.User.Identity.AuthenticationType — Federated.

person Blue Clouds    schedule 14.05.2015