You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
5.3 KiB
94 lines
5.3 KiB
|
4 years ago
|
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>(ApplicationUserManager.Create);
|
||
|
|
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
|
||
|
|
|
||
|
|
// Включение использования файла cookie, в котором приложение может хранить информацию для пользователя, выполнившего вход,
|
||
|
|
app.UseCookieAuthentication(new CookieAuthenticationOptions
|
||
|
|
{
|
||
|
|
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
|
||
|
|
LoginPath = new PathString("/Account/Login"),
|
||
|
|
Provider = new CookieAuthenticationProvider
|
||
|
|
{
|
||
|
|
// Позволяет приложению проверять метку безопасности при входе пользователя.
|
||
|
|
// Эта функция безопасности используется, когда вы меняете пароль или добавляете внешнее имя входа в свою учетную запись.
|
||
|
|
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
|
||
|
|
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 = ""
|
||
|
|
//});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|