Добавление OAuth2 в существующий проект MVC5 - PullRequest
0 голосов
/ 08 марта 2019

У меня есть существующий проект 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());
...