// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureAuth(IAppBuilder app, FitbitAuthenticationOptions fitbitAuthOptions) { // Configure the db context, user manager and signin manager to use a single instance per request app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create); app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create); // Enable the application to use a cookie to store information for the signed in user // and to use a cookie to temporarily store information about a user logging in with a third party login provider // Configure the sign in cookie app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { // Enables the application to validate the security stamp when the user logs in. // This is a security feature which is used when you change a password or add an external login to your account. OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) } }); app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process. app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); // Enables the application to remember the second login verification factor such as phone or email. // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from. // This is similar to the RememberMe option when you log in. app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); //todo: probably shouldn't leave api keyes viewable to all, but I don't have time to do things properly. app.UseFitbitAuthentication(fitbitAuthOptions); // Uncomment the following lines to enable logging in with third party login providers //app.UseMicrosoftAccountAuthentication( // clientId: "", // clientSecret: ""); //app.UseTwitterAuthentication( // consumerKey: "", // consumerSecret: ""); //app.UseFacebookAuthentication( // appId: "", // appSecret: ""); //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() //{ // ClientId = "", // ClientSecret = "" //}); }
public static IAppBuilder UseFitbitAuthentication(this IAppBuilder app, FitbitAuthenticationOptions options) { if (app == null) throw new ArgumentNullException(nameof(app)); if (options == null) throw new ArgumentNullException(nameof(options)); app.Use(typeof(FitbitAuthenticationMiddleware), app, options); return app; }
public static IAppBuilder UseFitbitAuthentication(this IAppBuilder app, FitbitAuthenticationOptions options) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } app.Use(typeof(FitbitAuthenticationMiddleware), app, options); return(app); }
public FitbitController(ApplicationUserManager userManager, IAuthenticationManager authManager, FitbitAuthenticationOptions fitbitAuth) { this.userManager = userManager; this.fitbitAuth = fitbitAuth; this.authManager = authManager; }
public void Configuration(IAppBuilder app) { var builder = new ContainerBuilder(); builder.RegisterControllers(typeof(MvcApplication).Assembly); builder.RegisterModule(new AutofacWebTypesModule()); builder.Register((a) => { var context = a.Resolve<HttpContextBase>(); if(context != null) { return context.GetOwinContext(); } return null; }).InstancePerRequest(); builder.Register((a) => { var context = a.Resolve<IOwinContext>(); if(context != null) { return context.Get<ApplicationSignInManager>(); } return null; }).InstancePerRequest(); builder.Register((a) => { var context = a.Resolve<IOwinContext>(); if(context != null) { return context.Get<ApplicationUserManager>(); } return null; }).InstancePerRequest(); builder.Register((a) => { var context = a.Resolve<IOwinContext>(); if(context != null) { return context.Get<ApplicationRoleManager>(); } return null; }).InstancePerRequest(); builder.Register((a) => { var context = a.Resolve<IOwinContext>(); if(context != null) { return context.Authentication; } return null; }).InstancePerRequest(); builder.Register(a => { var options = new FitbitAuthenticationOptions() { //probably shouldnt bake api keys here, but for now it works ClientId = "227PBF", ClientSecret = "dab2395907e7bec0317723bd2f13f4d1" }; options.Scope.Add("nutrition"); //get nutrition data options.Provider = new FitbitAuthenticationProvider() { OnAuthenticated = b => { b.Identity.AddClaim(new System.Security.Claims.Claim(Constants.FitbitClaimsToken, b.AccessToken)); return Task.CompletedTask; // we don't need to do anything that is async } }; return options; }); builder.RegisterType<ApplicationDbContext>(); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); var db = container.Resolve<ApplicationDbContext>(); app.UseAutofacMiddleware(container); app.UseAutofacMvc(); ConfigureAuth(app, container.Resolve<FitbitAuthenticationOptions>()); DatabaseBootstrap.Bootstrap(db); }