2017-02-02 5 views
0

Я работаю над созданием веб-сайта для своего класса веб-систем, в котором я буду внедрять платформу входа. После того, как сайт станет аутентифицированным, пользователь сможет отправлять сообщения другим пользователям, я буду использовать SignalR для обмена сообщениями в реальном времени.Работа с аутентификацией и AngularJS, а также SignalR

Я хочу создать систему, которая в пределах AngularJS Я могу назвать C# backend, предоставить имя пользователя и пароль и аутентифицироваться. В то же время я хотел бы использовать аутентификацию на основе ролей SignalR, чтобы обеспечить безопасность моих методов.

Пример:

[Authorize(Roles = "Admin")] 
public class AdminAuthHub : Hub 
{ 
} 

В настоящее время я написал свой собственный код, чтобы принять имя пользователя и пароль и хэш его и хранить хэш-значение. Однако я не хочу изобретать велосипед здесь. Я хочу использовать систему проверки подлинности на основе Microsoft, потому что я работаю в рамках базовой системы C# и технологии SignalR.

В настоящее время я хостинг с использованием Microsoft Azure, и это работает, и все, кроме меня, я собираюсь перейти на локально размещенный Windows Server, который я поддерживаю. Я слышал об использовании Active Directory, но никогда не работал с ним и должен был бы выполнить обширную настройку, чтобы подготовить для этого новый сервер.

Мой общий вопрос - какой путь я иду? Кроме того, если я все-таки строго придерживаюсь Microsoft, настраивает активный каталог на Windows Server 2016? Во время моего исследования я обнаружил, что существует метод аутентификации пользователя ASP.NET с базой данных SQL Server. Будет ли этот метод предпочтительнее, потому что система может использоваться вне ASP.NET, и данные в той форме, с которой я работал раньше?

Я пишу свою собственную логику аутентификации, принимая имя пользователя и пароль и хешируя и используя свои собственные таблицы и базы данных. Затем в пределах стороны SignalR вещи находят способ установки пользовательской переменной и установки их роли из моей базы данных. Затем просто выполните проверку в начале каждого вызова метода.

+0

Какие рамки ASP.Net вы используете? 4.5.2? Ядро? Вам не нужно использовать Active Directory - https://www.asp.net/identity было бы хорошим местом для начала. Для AngularJS 1/2? Вероятно, вы хотите взглянуть на соединения oAuth2 и OpenId для обработки аутентификации. –

+0

Единственная причина, по которой я упомянул AngularJs, состоит в том, что могут быть части веб-сайта, которые не подключены к SignalR, которые все еще должны выполнять аутентифицированную функцию. Например, просто изменить настройку учетной записи. Однако могу ли я просто написать Angular, который отправляет эти данные на сервер, и сервер определяет, аутентифицирован ли пользователь? C#, работающий в файле Asmx. Я знаю его старый и устаревший. –

+0

Я бы предложил потратить некоторое время, чтобы прочитать о различных веб-технологиях.Кажется, что вы пытаетесь достичь - это «статический» веб-сайт, подключенный к SignalR, я считаю, что вы можете достичь всего, что вы пытаетесь использовать с ASP.Net MVC. «https://app.pluralsight.com/player?author=scott-allen&name=aspdotnet-mvc5-fundamentals-m3-identity&mode=live&clip=0&course=aspdotnet-mvc5-fundamentals» может быть хорошим местом для начала. –

ответ

0

В Интернете есть много информации о том, как потенциально подходить к некоторым из этих вопросов.

Быстрый google для «Angualr/Asp.net identity/signalr» возвращает несколько ресурсов, которые вы можете удовлетворить вашим потребностям, возможно, не только, но и вы можете объединить некоторые из подходов.

Вот несколько ссылок для вас:

SignalR Authorization using Web API Token

https://logcorner.com/angular-js-token-based-authentication-using-asp-net-identity-and-asp-net-web-api/

https://www.codeproject.com/Articles/884647/Web-app-using-Web-API-SignalR-and-AngularJS