using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity.Owin; using Microsoft.Owin; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.DataProtection; using Microsoft.Owin.Security.Google; using Microsoft.Owin.Security.OAuth; using Owin; using SpaAspNetCore.Models; using SpaAspNetCore.Providers; using System; namespace SpaAspNetCore { public partial class Startup { // Включение использования OAuthAuthorization приложением. Это позволит обеспечить безопасность веб-API static Startup() { PublicClientId = "web"; OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString("/Token"), AuthorizeEndpointPath = new PathString("/Account/Authorize"), Provider = new ApplicationOAuthProvider(PublicClientId), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), AllowInsecureHttp = true }; } public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; } public static string PublicClientId { get; private set; } // Дополнительные сведения о настройке аутентификации см. на странице https://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureAuth(IAppBuilder app) { // Настройка контекста базы данных, диспетчера пользователей и диспетчера входа для использования одного экземпляра на запрос app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext(ApplicationUserManager.Create); app.CreatePerOwinContext(ApplicationSignInManager.Create); // Включение использования файла cookie, в котором приложение может хранить информацию для пользователя, выполнившего вход, app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { // Позволяет приложению проверять метку безопасности при входе пользователя. // Эта функция безопасности используется, когда вы меняете пароль или добавляете внешнее имя входа в свою учетную запись. OnValidateIdentity = SecurityStampValidator.OnValidateIdentity( validateInterval: TimeSpan.FromMinutes(20), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) } }); // Использование файла cookie для временного хранения информации о входах пользователя с помощью стороннего поставщика входа app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); // Позволяет приложению временно хранить информацию о пользователе, пока проверяется второй фактор двухфакторной проверки подлинности. app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); // Позволяет приложению запомнить второй фактор проверки имени входа. Например, это может быть телефон или почта. // Если выбрать этот параметр, то на устройстве, с помощью которого вы входите, будет сохранен второй шаг проверки при входе. // Точно так же действует параметр RememberMe при входе. app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); // Включение использования приложением маркера-носителя для аутентификации пользователей app.UseOAuthBearerTokens(OAuthOptions); // Раскомментируйте приведенные далее строки, чтобы включить вход с помощью сторонних поставщиков входа //app.UseMicrosoftAccountAuthentication( // clientId: "", // clientSecret: ""); //app.UseTwitterAuthentication( // consumerKey: "", // consumerSecret: ""); //app.UseFacebookAuthentication( // appId: "", // appSecret: ""); //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() //{ // ClientId = "", // ClientSecret = "" //}); } } }