-5

Я создаю приложение API для веб-приложений, прежде всего, для обслуживания чистого приложения HTML + Angular UI, а также для любой уполномоченной стороны. Теперь я бы хотел, прежде всего, веб-API, но также и пользовательский интерфейс, использовать «инъецированную/настроенную» службу аутентификации. Я хотел бы написать наименьший код и действительно получить максимальную отдачу от того, что ASP.NET и Identity могут дать мне об этом.Как создать общий аутентификационный веб-API?

Каковы установленные и принятые модели и методы для достижения этой цели?

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

ответ

0

Прежде всего, я хотел бы сказать, что безопасность трудна.

Вторая вещь, защита MVC обычно cookie based. Файл cookie либо получается через локальную страницу входа, либо с помощью внешнего поставщика удостоверений (SSO). Если он получен от центрального поставщика SSO, вам необходимо изучить протоколы, такие как WS-Federation, OpenID Connect или вы можете использовать поставщиков социальных сетей различных реализаций.

Третья вещь, безопасность Web API (который был бы как защитить их от вашего клиента на стороне углового кода) будет маркер на основе. Токен будет получен через OAuth. Это означает, что вам нужен сервер авторизации OAuth. Это может быть размещено локально (как и с вашей локальной страницей входа для проверки подлинности на основе файлов cookie), или оно может размещаться централизованно (как и для внешнего входа в систему SSO).

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

  • Масштабируемость серверов
  • затягивая Муфта
  • Мобильный Дружественные

Хороший учебник и демонстрация доступна в Token Based Authentication using ASP.NET Web API 2, Owin, and Identity

Также , См. IdentityServer3, который:

- это каркас и компонент, предназначенный для работы с хостом, который позволяет осуществлять однократную регистрацию и контроль доступа для современных веб-приложений и API с использованием протоколов OpenID Connect и OAuth2. Он поддерживает широкий круг клиентов, таких как мобильные, веб-сайты, SPA и настольные приложения, а также , что позволяет интегрировать новые и существующие архитектуры.

0

Обратите внимание, что это только самые основные настройки. Я очень рекомендую начинать с File > New Project, у которых уже настроен идентификатор.

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

Если вам нужно полное решение, я бы посмотрите на IdentityServer и его samples.


В вашей Startup.cs/ConfigureServices обеспечить, чтобы иметь следующий раздел:

// Configure our application database context to be Entity Framework backed by SQL Server 
services.AddEntityFramework() 
    .AddSqlServer() 
    .AddDbContext(options => 
     options.UseSqlServer(Configuration.Get("Database:Connection"))); 

// Specify the configuration of our Application database context 
services.Configure(options => 
{ 
    options.DefaultUsername = Configuration.Get("DefaultUser:Username"); 
    options.DefaultPassword = Configuration.Get("DefaultUSer:Password"); 
}); 

// Configure ASP.NET Identity to use our Identity-based application context 
services.AddIdentity() 
    .AddEntityFrameworkStores() 
    .AddDefaultTokenProviders(); 

что потребует что-то подобное в вашем config.json:

{ 
    "Mode": "Development", 
    "Database": { 
    "Connection": "Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;MultipleActiveResultSets=true" 
    }, 
    "DefaultUser": { 
    "Username": "myUsername", 
    "Password": "[email protected]!" 
    } 
} 

Затем в Startup.cs/Configure мы на самом деле нужно использовать сама услуга:

app.UseIdentity(); 

Единственное, что не хватает AuthorizeAttribute на ваших контроллерах.

Смежные вопросы