Мы создаем приложение ASP.NET MCV 3 с нуля, работающее в Windows Azure. Что касается уровня аутентификации и авторизации, мы думаем использовать службу контроля доступа. Я просмотрел несколько статей об ACS, где я получил основную идею, но у меня все еще есть некоторые сомнения по этому поводу.
Насколько я понимаю, с помощью ACS мы передаем процесс аутентификации одному или нескольким поставщикам удостоверений (IP), в основном мы доверяем другой системе (например, Microsoft Live ID) для аутентификации наших пользователей.
Основной процесс очень прост: на этапе аутентификации мы перенаправляем (это делает ACS) пользователя на один из наших «доверенных» IP-адресов, который перенаправляет пользователя (с действительным токеном) в ACS и, в конечном итоге, в наше приложение.
Отсюда возникает ряд вопросов:
Поскольку мы не хотим, чтобы все пользователи с учетной записью Live ID могли получить доступ к нашему приложению, я предполагаю, что должен быть другой процесс для проверки этого пользователя и проверки того, зарегистрирован ли он в нашем приложении. Вопрос где? В АСУ или в нашем приложении?
У меня есть идея по этому поводу, но я не знаю, правильно ли это сделать:
На этапе регистрации система (наше веб-приложение) спрашивает пользователя, какой IP-адрес (например, Live ID, Google, Facebook и наше приложение) он хочет использовать для аутентификации в приложении. Затем пользователь проходит процесс аутентификации в системе IP, и когда он возвращается, мы сохраняем его имя пользователя (имя пользователя IP) в нашей БД. Итак, в следующий раз, на этапе аутентификации, мы можем проверить, зарегистрирован ли этот пользователь в нашей системе.
Если приведенная выше теория верна, это означает, что в нашем приложении. нам нужно создать нашего поставщика членства для хранения имен пользователей, поступающих с IP-адресов и пользователей, выбравших наше приложение. глоток. Я прав? Как лучше всего разработать описанный выше процесс?
Теперь поговорим об Авторизации и «Ролях». Как это работает с ACS? Управляет ли ACS несколькими ролями для каждого пользователя?
Опять же, насколько я понимаю, с помощью ACS вы можете создать ряд «групп правил», связанных с IP, а не с одним пользователем. Если это так, как мы управляем пользователями в роли в нашем приложении? Предположим, например, что у нас есть несколько ролей, и наши пользователи могут быть связаны с этими ролями. Можем ли мы использовать ASC для управления ими?
Итак, последний вопрос: охватывает ли ACS весь процесс аутентификации и авторизации? Нужно ли нам по-прежнему использовать .net Membership Provider? Как лучше всего удовлетворить наши требования?