У меня есть существующий проект MVC 5, который в настоящее время использует аутентификацию Owin, и мне нужно добавить OAuth2 только к одному новому контроллеру MVC. Для нового контроллера мне нужна только аутентификация OAuth2, а не текущая аутентификация. А для остальных контроллеров мне нужно чтобы аутентификация оставалась как есть. Я знаю, как настроить OAuth2, но мне нужно выяснить, как разделить два, чтобы я мог использовать их по отдельности. Ниже находится Startup.Authorization.cs
сборка: OwinStartup (typeof (автозагрузка), «ConfigureAuth»)]
пространство имен XXXX
{
публичный класс Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
ConfigureAuth(app);
WebApiConfig.Register(config);
app.UseCors(CorsOptions.AllowAll);
}
public void ConfigureAuth (приложение IAppBuilder)
{
app.CreatePerOwinContext(CreateIdentityUserContext);
app.CreatePerOwinContext<IdentityUserManager>(IdentityUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
ExpireTimeSpan = TimeSpan.FromMinutes(this.TimeoutMinutes),
SlidingExpiration = true,
LoginPath = new PathString(this.LoginUrl),
Provider = new CookieAuthenticationProvider
{
OnApplyRedirect = ctx =>
{
if (!IsAjaxRequest(ctx.Request))
{
ctx.Response.Redirect(ctx.RedirectUri);
}
}
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
CookieName = ".AspNet." + DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie,
AuthenticationType = DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie,
AuthenticationMode = AuthenticationMode.Passive,
ExpireTimeSpan = TimeSpan.FromDays(90),
SlidingExpiration = false,
Provider = new CookieAuthenticationProvider
{
OnResponseSignIn = ctx =>
{
ctx.OwinContext.Set("auth-prop-expires", ctx.Properties.ExpiresUtc);
ctx.OwinContext.Set("auth-prop-persist", ctx.Properties.IsPersistent);
var issued = ctx.Properties.IssuedUtc ?? DateTimeOffset.UtcNow;
ctx.Properties.IsPersistent = true;
},
OnResponseSignedIn = ctx =>
{
ctx.Properties.ExpiresUtc = ctx.OwinContext.Get<DateTimeOffset?>("auth-prop-expires");
ctx.Properties.IsPersistent = ctx.OwinContext.Get<bool>("auth-prop-persist");
}
}
});
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new Providers.AuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());