Пример #1
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any Plugins or IOC dependencies used by your web services
        /// </summary>
        public override void Configure(Container container)
        {
            SetConfig(new HostConfig
            {
                DebugMode                      = AppSettings.Get("DebugMode", false),
                WebHostPhysicalPath            = MapProjectPath("~/wwwroot"),
                AddRedirectParamsToQueryString = true,
                UseCamelCase                   = true,
            });

            Plugins.Add(new TemplatePagesFeature());
            this.Plugins.Add(new PostmanFeature());
            this.Plugins.Add(new CorsFeature());
            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] {
                //new BasicAuthProvider(), //Sign-in with HTTP Basic Auth
                new CustomCredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
            }));

            Plugins.Add(new RegistrationFeature());

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IAuthRepository>(userRep);
        }
Пример #2
0
        public void Configure(IAppHost appHost)
        {
            var AppSettings = appHost.AppSettings;

            appHost.Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                                new IAuthProvider[] {
                //new BasicAuthProvider(), //Sign-in with HTTP Basic Auth
                new JwtAuthProvider(AppSettings)
                {
                    AuthKey = AesUtils.CreateKey(),
                    RequireSecureConnection = false,
                },
                new CredentialsAuthProvider(),     //HTML Form post of UserName/Password credentials
                new FacebookAuthProvider(AppSettings),
                new TwitterAuthProvider(AppSettings),
            }));

            appHost.Plugins.Add(new RegistrationFeature());

            var userRep = new InMemoryAuthRepository();

            appHost.Register <IAuthRepository>(userRep);

            var authRepo = userRep;

            var newAdmin = new UserAuth {
                Email = "*****@*****.**", DisplayName = "Admin User"
            };
            var user = authRepo.CreateUserAuth(newAdmin, "p@55wOrd");

            authRepo.AssignRoles(user, new List <string> {
                "Admin"
            });
        }
Пример #3
0
        private void SetupAuthentication(Container container)
        {
            // We use the [Authenticate] attribute to control access to creation of short URLs.
            // Therefore we have to set up an IAuthProvider even if the administrator doesn't want authentication.
            var    appSettings   = ConfigurationManager.AppSettings;
            var    authProviders = new List <IAuthProvider>();
            string htmlRedirect  = null;

            if (appSettings.UseCredentials())
            {
                var adminPassword = appSettings["AdminPassword"];
                authProviders.Add(new CredentialsAuthProvider(AppSettings)); //HTML Form post of UserName/Password credentials
                container.Register <ICacheClient>(new MemoryCacheClient());
                var userRep = new InMemoryAuthRepository();
                userRep.CreateUserAuth(new UserAuth {
                    UserName = "******"
                }, adminPassword);
                container.Register <IUserAuthRepository>(userRep);
            }
            if (appSettings.UseAad())
            {
                htmlRedirect = "/auth/aad";
                authProviders.Add(new AadAuthProvider(AppSettings));
            }
            if (!appSettings.UseAad() && !appSettings.UseCredentials())
            {
                authProviders.Add(new AlwaysAuthorizedAuthProvider());
            }
            Plugins.Add(new AuthFeature(() => new AuthUserSession(), authProviders.ToArray(), htmlRedirect));
        }
Пример #4
0
        public override void Configure(Funq.Container container)
        {
            // Use authorization
            this.Plugins.Add(new AuthFeature(
                                 () => new UserSession(),
                                 new IAuthProvider[] { new CredentialsAuthProvider() }));

            // Use in-memory cache for session objects
            container.Register <ICacheClient>(new MemoryCacheClient());

            // Make sessions expire after 10 seconds
            this.GlobalResponseFilters.Add((req, res, dto) =>
            {
                var session = req.GetSession();
                if (session != null)
                {
                    req.SaveSession(session, TimeSpan.FromSeconds(10));
                }
            });

            // Use in-memory user repo with two hard-coded users
            var userRep = new InMemoryAuthRepository();
            var user    = userRep.CreateUserAuth();

            user.UserName = "******";
            userRep.CreateUserAuth(user, "alice1");
            user          = userRep.CreateUserAuth();
            user.UserName = "******";
            userRep.CreateUserAuth(user, "bob2");
            container.Register <IUserAuthRepository>(userRep);
        }
Пример #5
0
			public override void Configure(Container container)
			{
				Plugins.Add(new AuthFeature(() => new CustomUserSession(),
					new AuthProvider[] {
						new CredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
						new BasicAuthProvider(), //Sign-in with Basic Auth
					}));

				container.Register<ICacheClient>(new MemoryCacheClient());
				var userRep = new InMemoryAuthRepository();
				container.Register<IUserAuthRepository>(userRep);

				string hash;
				string salt;
				new SaltedHash().GetHashAndSaltString("test1", out hash, out salt);

				userRep.CreateUserAuth(new UserAuth {
					Id = 1,
					DisplayName = "DisplayName",
					Email = "*****@*****.**",
					UserName = "******",
					FirstName = "FirstName",
					LastName = "LastName",
					PasswordHash = hash,
					Salt = salt,
				}, "test1");
			}
Пример #6
0
            public override void Configure(Funq.Container container)
            {
                //DbRegistration
                var connectionString = "";// ConfigurationManager.ConnectionStrings["Bd"].ConnectionString;

                container.Register <IDbConnectionFactory>(new OrmLiteConnectionFactory(connectionString, PostgreSqlDialect.Provider));
                //IoC
                //IoC
                //container.RegisterAutoWired<Negocio>();

                //Autentication
                Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider() }));
                container.Register <ICacheClient>(new MemoryCacheClient());

                var userRepository = new InMemoryAuthRepository();

                container.Register <IUserAuthRepository>(userRepository);
                string hash;
                string salt;
                var    usuario = "A1b2c3d4"; //ConfigurationManager.AppSettings["user"].ToString();
                var    pass    = "******"; //ConfigurationManager.AppSettings["pass"].ToString();

                new SaltedHash().GetHashAndSaltString(pass, out hash, out salt);
                userRepository.CreateUserAuth(new UserAuth()
                {
                    DisplayName = "Admin", Email = "*****@*****.**", FirstName = "pepe", LastName = "otro", UserName = usuario, PasswordHash = hash, Salt = salt
                }, pass);

                //Routes
                //    .Add<ServiceStatus>("/ServiceStatus")
                //    .Add<ServiceStatus>("/ServiceStatus/{A}");
            }
Пример #7
0
            public override void Configure(Funq.Container container)
            {
                Routes
                    .Add<Hello>("/hello")
                    .Add<Hello>("/hello/{Name}");
                helloService = container.Resolve<HelloService>();

                AuthFeature authFeature = new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {new BasicAuthProvider(), new TwitterAuthProvider(new AppSettings()),});
                //authFeature.HtmlRedirect
                Plugins.Add(authFeature);
                MemoryCacheClient memoryCacheClient = new MemoryCacheClient();
                container.Register<ICacheClient>(memoryCacheClient);

                var userRepository = new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(userRepository);

                string hash;
                string salt;
                string password = "******";
                new SaltedHash().GetHashAndSaltString(password, out hash, out salt);
                userRepository.CreateUserAuth(
                    new UserAuth {
                        Id = 1,
                        DisplayName = "JoeUser",
                        Email = "*****@*****.**",
                        UserName = "******",
                        FirstName = "Joe",
                        LastName = "User",
                        PasswordHash = hash,
                        Salt = salt,
                    }, password);
                //IHttpResult authenticationRequired = helloService.AuthenticationRequired(); // ????
            }
Пример #8
0
            public override void Configure(Container container)
            {
                Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[]
                {
                    new BasicAuthProvider()
                }));

                Plugins.Add(new RegistrationFeature());

                container.Register <ICacheClient>(new MemoryCacheClient());
                var userRepo = new InMemoryAuthRepository();

                container.Register <IUserAuthRepository>(userRepo);

                new SaltedHash().GetHashAndSaltString("pass", out string hash, out string salt);
                userRepo.CreateUserAuth(new UserAuth
                {
                    Id           = 1,
                    DisplayName  = "Toby",
                    UserName     = "******",
                    FirstName    = "Tobias",
                    LastName     = "K. N",
                    PasswordHash = hash,
                    Salt         = salt,
                    Roles        = new List <string> {
                        RoleNames.Admin
                    },
                    //Permissions = new List<string> { "GetCafe" },
                }, "pass");
            }
Пример #9
0
 /// <summary>
 /// Application specific configuration
 /// This method should initialize any IoC resources utilized by your web service classes.
 /// </summary>
 /// <param name="container"></param>
 public override void Configure(Container container)
 {
     Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CustomAuthentication(), }));
     container.Register<ICacheClient>(new MemoryCacheClient());
     var userRepository = new InMemoryAuthRepository();
     container.Register<IUserAuthRepository>(userRepository);
 }
Пример #10
0
        // Configure your AppHost with the necessary configuration and dependencies your App needs
        public override void Configure(Container container)
        {
            Plugins.Add(new TemplatePagesFeature()); // enable server-side rendering, see: http://templates.servicestack.net

            SetConfig(new HostConfig
            {
                AddRedirectParamsToQueryString = true,
                DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false)
            });

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] {
                new BasicAuthProvider(),       //Sign-in with HTTP Basic Auth
                new CredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
            }));

            Plugins.Add(new RegistrationFeature());

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IUserAuthRepository>(userRep);

            var authRepo = userRep;

            var newAdmin = new UserAuth();

            newAdmin.Email = "*****@*****.**";
            var user = authRepo.CreateUserAuth(newAdmin, "!Abc1234");

            authRepo.AssignRoles(user, new List <string> {
                "Admin"
            });
        }
Пример #11
0
        public override void Configure(Container container)
        {
            var unityContainer = new UnityContainer()
              .AddNewExtension<BuildTracking>()
              .AddNewExtension<LogCreation>();

            var userRepository = new InMemoryAuthRepository();

            this.Plugins.Add(new AuthFeature(() => new AuthUserSession(),
              new IAuthProvider[] { new BasicAuthProvider()}));

            this.Plugins.Add(new RegistrationFeature());

            unityContainer.RegisterInstance<ICacheClient>(new MemoryCacheClient());
            unityContainer.RegisterInstance<IUserAuthRepository>(userRepository);

            unityContainer.RegisterInstance<IDbConnectionFactory>(new OrmLiteConnectionFactory("~/Database/SmartDom.db".MapServerPath(),
                SqliteOrmLiteDialectProvider.Instance));

            unityContainer.RegisterType<IOrmWrapper, OrmWrapper>();
            unityContainer.RegisterType<IConfigurationRepository, AppConfigRepository>();
            unityContainer.RegisterType<MediaAdapterAbstractFactory<SerialPort>, SerialPortAdapterFactory>(new ContainerControlledLifetimeManager());
            unityContainer.RegisterType<ModbusMasterAbstractFactory<SerialPort>, RtuSerialModbusMasterFactory>(new ContainerControlledLifetimeManager());
            unityContainer.RegisterType<IGenericRepository<Device>, DeviceDbRepository>(new ContainerControlledLifetimeManager(),
                new InjectionMethod("Initialize"));
            unityContainer.RegisterType<IDeviceAccessLayer, SerialAccessLayer>(new ContainerControlledLifetimeManager());
            unityContainer.RegisterType<IMessageDecoder, MessageDecoder>();
            unityContainer.RegisterType<IDeviceManager, DeviceManager>();

            var unityAdapter = new UnityContainerAdapter(unityContainer);
            container.Adapter = unityAdapter;

            AddUser(userRepository);
        }
Пример #12
0
        public override void Configure(Container container)
        {
            var authRepo = new InMemoryAuthRepository();

            container.Register <IAuthRepository>(c => authRepo);
            authRepo.CreateUserAuth(new UserAuth {
                UserName    = "******",
                Email       = "*****@*****.**",
                DisplayName = "ServiceStack User",
                Roles       = new List <string> {
                    "Member"
                },
            }, "test");

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] {
                new CredentialsAuthProvider(AppSettings),
                new NetCoreIdentityAuthProvider(AppSettings)
                {
                    PopulateSessionFilter = (session, principal, req) =>
                    {
                        //Example of populating ServiceStack Session Roles for EF Identity DB
                        var userManager = req.TryResolve <UserManager <ApplicationUser> >();
                        var user        = userManager.FindByIdAsync(session.Id).Result;
                        var roles       = userManager.GetRolesAsync(user).Result;
                        session.Roles   = roles.ToList();
                    }
                },
            }));

            SetConfig(new HostConfig {
                AdminAuthSecret = "secret"
            });
        }
Пример #13
0
        public void Install(Container container)
        {
            var userRepo = new InMemoryAuthRepository();

            container.Register<IUserAuthRepository>(userRepo);

            //HACK: Add default users
            var users = new[]
                {
                    new User("Admin", "AdminPassword"),
                    new User("cyberzed", "cyberzed")
                };

            foreach (var user in users)
            {
                string hash;
                string salt;

                new SaltedHash().GetHashAndSaltString(user.Password, out hash, out salt);

                userRepo.CreateUserAuth(
                    new UserAuth
                        {
                            DisplayName = user.Username,
                            UserName = user.Username,
                            PasswordHash = hash,
                            Salt = salt
                        },
                    user.Password);
            }
        }
Пример #14
0
        public override void Configure(Container container)
        {
            //ASP.NET MVC integration
            ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));

            SetConfig(CreateEndpointHostConfig());

            JsConfig.EmitCamelCaseNames = true;

            Plugins.Add(new ValidationFeature());
            container.RegisterValidators(typeof(AppHost).Assembly);

            container.Register<ICacheClient>(new MemoryCacheClient());
            container.RegisterAutoWired<BicyleRepository>();

            Plugins.Add(new AuthFeature(
            () => new AuthUserSession(),
            new IAuthProvider[] {
                    new CredentialsAuthProvider()
                }));

            var userAuthRepository = new InMemoryAuthRepository();
            userAuthRepository.CreateUserAuth(new UserAuth { Email = "*****@*****.**", DisplayName= "Admin User"}, "admin");
            container.Register<IUserAuthRepository>(userAuthRepository);
        }
Пример #15
0
        public override void Configure(Container container)
        {
            Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                                        new AuthProvider[] {
                new CredentialsAuthProvider(),                           //HTML Form post of UserName/Password credentials
                new BasicAuthProvider(),                                 //Sign-in with Basic Auth
            }));

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IUserAuthRepository>(userRep);

            string hash;
            string salt;

            new SaltedHash().GetHashAndSaltString("test1", out hash, out salt);

            userRep.CreateUserAuth(new UserAuth {
                Id           = 1,
                DisplayName  = "DisplayName",
                Email        = "*****@*****.**",
                UserName     = "******",
                FirstName    = "FirstName",
                LastName     = "LastName",
                PasswordHash = hash,
                Salt         = salt,
            }, "test1");
        }
Пример #16
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any IoC resources utilized by your web service classes.
        /// </summary>
        public override void Configure(Container container)
        {
            //Config examples
            //this.Plugins.Add(new PostmanFeature());
            //this.Plugins.Add(new CorsFeature());

            Plugins.Add(new CorsFeature());

            Plugins.Add(new SessionFeature());

            Plugins.Add(new RegistrationFeature());

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[]
            {
                new BasicAuthProvider()
            }));

            var userRepo = new InMemoryAuthRepository();

            container.Register <IAuthRepository>(userRepo);

            container.Register <ICacheClient>(new MemoryCacheClient());

            container.Register <IDbConnectionFactory>(c => new OrmLiteConnectionFactory(
                                                          "Data Source=.; Initial Catalog=VotingApp; Integrated Security=True", SqlServerDialect.Provider
                                                          ));

            GlobalRequestFilters.Add((req, res, dto) => req.ResponseContentType = MimeTypes.Json);
        }
Пример #17
0
            public override void Configure(Container container)
            {
                SetConfig(new HostConfig {
                    WebHostUrl = webHostUrl, DebugMode = true
                });

                Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                                            new IAuthProvider[] { //Www-Authenticate should contain basic auth, therefore register this provider first
                    new BasicAuthProvider(),                      //Sign-in with Basic Auth
                    new CredentialsAuthProvider(),                //HTML Form post of UserName/Password credentials
                    new CustomAuthProvider()
                }, "~/" + LoginUrl));

                container.Register(new MemoryCacheClient());
                userRep = new InMemoryAuthRepository();
                container.Register <IAuthRepository>(userRep);

                if (configureFn != null)
                {
                    configureFn(container);
                }

                CreateUser(1, UserName, null, Password, new List <string> {
                    "TheRole"
                }, new List <string> {
                    "ThePermission"
                });
                CreateUser(2, UserNameWithSessionRedirect, null, PasswordForSessionRedirect);
                CreateUser(3, null, EmailBasedUsername, PasswordForEmailBasedAccount);
            }
Пример #18
0
        /* Uncomment to enable ServiceStack Authentication and CustomUserSession
         * private void ConfigureAuth(Funq.Container container)
         * {
         *      var appSettings = new AppSettings();
         *
         *      //Default route: /auth/{provider}
         *      Plugins.Add(new AuthFeature(() => new CustomUserSession(),
         *              new IAuthProvider[] {
         *                      new CredentialsAuthProvider(appSettings),
         *                      new FacebookAuthProvider(appSettings),
         *                      new TwitterAuthProvider(appSettings),
         *                      new BasicAuthProvider(appSettings),
         *              }));
         *
         *      //Default route: /register
         *      Plugins.Add(new RegistrationFeature());
         *
         *      //Requires ConnectionString configured in Web.Config
         *      var connectionString = ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString;
         *      container.Register<IDbConnectionFactory>(c =>
         *              new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider));
         *
         *      container.Register<IUserAuthRepository>(c =>
         *              new OrmLiteAuthRepository(c.Resolve<IDbConnectionFactory>()));
         *
         *      var authRepo = (OrmLiteAuthRepository)container.Resolve<IUserAuthRepository>();
         *      authRepo.CreateMissingTables();
         * }
         */

        private void ConfigureAuth(Funq.Container container)
        {
            var appSettings = new AppSettings();

            //Default route: /auth/{provider}
            Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                                        new IAuthProvider[] {
                new BasicAuthProvider(appSettings),
            }));
            var userRepository = new InMemoryAuthRepository();

            container.Register <IUserAuthRepository>(userRepository);
            string hash;
            string salt;

            new SaltedHash().GetHashAndSaltString("password", out hash, out salt);
            userRepository.CreateUserAuth(new UserAuth
            {
                Id           = 1,
                DisplayName  = "JoeUser",
                Email        = "*****@*****.**",
                UserName     = "******",
                FirstName    = "Joe",
                LastName     = "User",
                PasswordHash = hash,
                Salt         = salt
            }, "password");
        }
Пример #19
0
        public static void Init(Container container, string connectionString)
        {
            var dbConnectionFactory = new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider);
            container.Register<IDbConnectionFactory>(dbConnectionFactory);
            container.Register<ICacheClient>(new MemoryCacheClient());

            //user auth testing
            var userRepo = new InMemoryAuthRepository();

            string hash;
            string salt;
            new SaltedHash().GetHashAndSaltString("ssapi", out hash, out salt);
            userRepo.CreateUserAuth(new UserAuth
            {
                Id = 1,
                DisplayName = "Api User",
                Email = "*****@*****.**",
                UserName = "******",
                FirstName = "Api",
                LastName = "User",
                PasswordHash = hash,
                Salt = salt
            }, "ssapi");

            container.Register<IUserAuthRepository>(userRepo);
        }
Пример #20
0
            public override void Configure(Funq.Container container)
            {
                //DbRegistration
                var connectionString = "";// ConfigurationManager.ConnectionStrings["Bd"].ConnectionString;
                container.Register<IDbConnectionFactory>(new OrmLiteConnectionFactory(connectionString, PostgreSqlDialect.Provider));
                //IoC
                //IoC
                //container.RegisterAutoWired<Negocio>();

                //Autentication
                Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider() }));
                container.Register<ICacheClient>(new MemoryCacheClient());

                var userRepository = new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(userRepository);
                string hash;
                string salt;
                var usuario = "A1b2c3d4"; //ConfigurationManager.AppSettings["user"].ToString();
                var pass = "******";//ConfigurationManager.AppSettings["pass"].ToString();

                new SaltedHash().GetHashAndSaltString(pass, out hash, out salt);
                userRepository.CreateUserAuth(new UserAuth() { DisplayName = "Admin", Email = "*****@*****.**", FirstName = "pepe", LastName = "otro", UserName = usuario, PasswordHash = hash, Salt = salt }, pass);

                //Routes
                //    .Add<ServiceStatus>("/ServiceStatus")
                //    .Add<ServiceStatus>("/ServiceStatus/{A}");
            }
Пример #21
0
        public override void Configure(Container container)
        {
            SetConfig(new HostConfig {
                WebHostUrl = webHostUrl, DebugMode = true
            });

            Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                                        GetAuthProviders(), "~/" + AuthTests.LoginUrl)
            {
                RegisterPlugins = { new WebSudoFeature() }
            });

            container.Register(new MemoryCacheClient());
            userRep = new InMemoryAuthRepository();
            container.Register <IAuthRepository>(userRep);

            if (configureFn != null)
            {
                configureFn(container);
            }

            CreateUser(1, AuthTests.UserName, null, AuthTests.Password, new List <string> {
                "TheRole"
            }, new List <string> {
                "ThePermission"
            });
            CreateUser(2, AuthTests.UserNameWithSessionRedirect, null, AuthTests.PasswordForSessionRedirect);
            CreateUser(3, null, AuthTests.EmailBasedUsername, AuthTests.PasswordForEmailBasedAccount);
        }
Пример #22
0
        public override IUserAuthRepository CreateAuthRepo()
        {
            var inMemoryRepo = new InMemoryAuthRepository();

            InitTest(inMemoryRepo);
            return(inMemoryRepo);
        }
Пример #23
0
        public override void Configure(Funq.Container container)
        {
            JsConfig.EmitCamelCaseNames = true;
            JsConfig.IncludeNullValues  = true;
            JsConfig.DateHandler        = JsonDateHandler.ISO8601;

            LogManager.LogFactory = new DebugLogFactory();

            SetConfig(new EndpointHostConfig
            {
                WsdlServiceNamespace = "",
                AllowJsonpRequests   = true,
                DebugMode            = true,
                EnableFeatures       = Feature.All.Remove(GetDisabledFeatures())
            });

            //Authentication (see: https://github.com/ServiceStack/ServiceStack/blob/master/tests/ServiceStack.WebHost.Endpoints.Tests/AuthTests.cs)
            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] {
                new BasicAuthProvider(),   //Sign-in with Basic Auth
            })
            {
                HtmlRedirect = null      /* prevent redirect to login page, make the user login using basic auth prompt */
            });
            userRepository = new InMemoryAuthRepository();
            container.Register <IUserAuthRepository>(userRepository);
            CreateUser(userRepository, 1, UserName, "DisplayName", null, Password);

            //NEW: Enable the validation feature and scans the service assembly for validators
            Plugins.Add(new ValidationFeature());
            container.RegisterValidators(typeof(Northwind.Data.Services.CategoryService).Assembly);

            //Caching
            container.Register <ICacheClient>(new MemoryCacheClient());

            //Repositories
            container.RegisterAs <CategoryServiceRepository, ICategoryServiceRepository>();
            container.RegisterAs <CustomerServiceRepository, ICustomerServiceRepository>();
            container.RegisterAs <CustomerCustomerDemoServiceRepository, ICustomerCustomerDemoServiceRepository>();
            container.RegisterAs <CustomerDemographicServiceRepository, ICustomerDemographicServiceRepository>();
            container.RegisterAs <EmployeeServiceRepository, IEmployeeServiceRepository>();
            container.RegisterAs <EmployeeTerritoryServiceRepository, IEmployeeTerritoryServiceRepository>();
            container.RegisterAs <OrderServiceRepository, IOrderServiceRepository>();
            container.RegisterAs <OrderDetailServiceRepository, IOrderDetailServiceRepository>();
            container.RegisterAs <ProductServiceRepository, IProductServiceRepository>();
            container.RegisterAs <RegionServiceRepository, IRegionServiceRepository>();
            container.RegisterAs <ShipperServiceRepository, IShipperServiceRepository>();
            container.RegisterAs <SupplierServiceRepository, ISupplierServiceRepository>();
            container.RegisterAs <TerritoryServiceRepository, ITerritoryServiceRepository>();

            //DataAccess / OrmLite
            var connectionString = ConfigurationManager.ConnectionStrings["ApiDbConnectionString"].ConnectionString;

            container.Register <IDataAccessAdapterFactory>(c => new DataAccessAdapterFactory(connectionString));
            container.Register <IDbConnectionFactory>(c => new OrmLiteConnectionFactory(connectionString, true, new SqlServerOrmLiteDialectProvider()));
        }
Пример #24
0
        public override void Configure(Container container)
        {
            var appSettings = new AppSettings();

            container.Register(InfusionBootstrapper.Instance.Container.Resolve <MdsRepository>());
            JsConfig.DateHandler = DateHandler.ISO8601;
            Plugins.Add(new SwaggerFeature());
            Plugins.Add(new CorsFeature());
            Plugins.Add(new PostmanFeature());

            var yammerProvider = new YammerAuthProvider(appSettings);

            //{
            //    RedirectUrl = "http://192.168.1.154:2223",
            //    CallbackUrl = "http://192.168.1.154:2223/auth/yammer",
            //    ClientId = "rwKNTVw2idIza5XShMiQw",
            //    ClientSecret = "9e9X1kpJx96mA44nsBY6flCfsnyN7fgE7s9bmQVo",
            //};

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[]
            {
                yammerProvider
            }));

            //Plugins.Add(new RegistrationFeature());

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IUserAuthRepository>(userRep);

            var disableFeatures = Feature.Jsv | Feature.Soap | Feature.Soap11 | Feature.Soap12 | Feature.Metadata;

            SetConfig(new HostConfig
            {
                EnableFeatures = Feature.All.Remove(disableFeatures),

                DefaultContentType   = MimeTypes.Json,
                MetadataRedirectPath = null,
                DefaultRedirectPath  = null
            });

            this.PreRequestFilters.Add((req, resp) =>
            {
                if (req.OperationName == typeof(MdsOrderRequest).Name &&
                    req.QueryString != null && req.QueryString.Count > 0)
                {
                    resp.StatusCode        = (int)HttpStatusCode.BadRequest;
                    resp.StatusDescription = "Query strings not allowed for this operation.";
                    resp.EndRequest();
                }
            });
        }
Пример #25
0
 private void ConfigureAuth(Container container)
 {
     Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {
         new CredentialsAuthProvider()
     }));
     Plugins.Add(new RegistrationFeature());
     container.Register<ICacheClient>(new MemoryCacheClient());
     var userRep = new InMemoryAuthRepository();
     userRep.CreateUserAuth(new UserAuth() { UserName = "******", Id = 1 }, "bar");
     container.Register<IUserAuthRepository>(userRep);
 }
Пример #26
0
        // http://localhost:5000/auth/[email protected]&&password=!Abc1234
        // Configure your AppHost with the necessary configuration and dependencies your App needs
        public override void Configure(Container container)
        {
            Plugins.Add(new TemplatePagesFeature()); // enable server-side rendering, see: http://templates.servicestack.net

            if (Config.DebugMode)
            {
                Plugins.Add(new HotReloadFeature());
            }

            Plugins.Add(new RazorFormat()); // enable ServiceStack.Razor

            SetConfig(new HostConfig
            {
                AddRedirectParamsToQueryString = true,
                DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false)
            });

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] {
                //new BasicAuthProvider(), //Sign-in with HTTP Basic Auth
                new JwtAuthProvider(AppSettings)
                {
                    AuthKey = AesUtils.CreateKey(),
                    RequireSecureConnection = false,
                },
                new CredentialsAuthProvider(),     //HTML Form post of UserName/Password credentials
                new FacebookAuthProvider(AppSettings),
                new TwitterAuthProvider(AppSettings),
            }));

            Plugins.Add(new RegistrationFeature());

            Plugins.Add(new OpenApiFeature
            {
                UseBearerSecurity = true,
            });

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IAuthRepository>(userRep);

            var authRepo = userRep;

            var newAdmin = new UserAuth {
                Email = "*****@*****.**"
            };
            var user = authRepo.CreateUserAuth(newAdmin, "test");

            authRepo.AssignRoles(user, new List <string> {
                "Admin"
            });
        }
        public override void Configure(Container container)
        {
            JsConfig.DateHandler = DateHandler.ISO8601;

            //-------------------------------------------------------------
            // Configure AuthFeature
            //
            // ** Re-wire explicit routes to use an '/api' prefix

            Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                                        new IAuthProvider[]
            {
                new BasicAuthProvider(),
                new CredentialsAuthProvider(),
                new JwtAuthProvider()
                {
                    RequireSecureConnection = false,
                    HashAlgorithm           = "RS256",
                    PrivateKeyXml           = GetPrivateKeyXml()
                }
            })
            {
                HtmlRedirect = "/auth/sign-in",
                DeleteSessionCookiesOnLogout = true,
                GenerateNewSessionCookiesOnAuthentication = true,
                ServiceRoutes = new Dictionary <Type, string[]>
                {
                    { typeof(AuthenticateService), new [] { "/api/auth", "/api/auth/{provider}" } }
                },
                IncludeAssignRoleServices = false
            });

            Plugins.Add(new RegistrationFeature()
            {
                AtRestPath = "/api/auth/register"
            });

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IUserAuthRepository>(userRep);

            //-------------------------------------------------------------
            // Create Test Accounts

            CreateAccountIfNotExists(container, "admin", "Administrator", "/images/avatar1-bw.png", "Admin");
            CreateAccountIfNotExists(container, "guest", "Guest", "/images/avatar2-bw.png");

            //-------------------------------------------------------------
            // Add CORS
            Plugins.Add(new CorsFeature(allowCredentials: true,
                                        allowedHeaders: "Content-Type, Allow, Authorization"));
        }
        private void SetupDependencies()
        {
            // Ubuntu VM running redis
            var redisConnection = AppSettings.GetString("RedisConnectionString");
            Container.Register<IRedisClientsManager>(new BasicRedisClientManager(redisConnection));

            // Setup basic auth
            Container.Register<ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();
            Container.Register<IUserAuthRepository>(userRep);

            RegisterUsers(userRep);
        }
        protected virtual async Task SetUp()
        {
            AppHost = new BasicAppHost().Init();
            AppHost.Container.Register <IDbConnectionFactory>(new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider));
            AuthRepo = new InMemoryAuthRepository();
            AppHost.Container.Register <IAuthRepository>(AuthRepo);
            AppHost.Container.Register <IAuthSession>(c => CreateUserSession());

            CreateUser(1, UserName, null, Password, new List <string> {
                "Admin"
            });

            await Task.CompletedTask;
        }
Пример #30
0
        public override void Configure(Container container)
        {
            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                new IAuthProvider[]
                {
                    //new BasicAuthProvider(), //Sign-in with HTTP Basic Auth
                    new MyCredentialsAuthProvider() //HTML Form post of UserName/Password credentials
                }));

            Plugins.Add(new RegistrationFeature());

            container.Register<ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();
            container.Register<IUserAuthRepository>(userRep);
        }
Пример #31
0
        private void SetupDependencies()
        {
            // Ubuntu VM running redis
            var redisConnection = AppSettings.GetString("RedisConnectionString");

            Container.Register <IRedisClientsManager>(new BasicRedisClientManager(redisConnection));

            // Setup basic auth
            Container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            Container.Register <IUserAuthRepository>(userRep);

            RegisterUsers(userRep);
        }
        public override void Configure(Funq.Container container)
        {
            // Add credentials provider and our custom session
            Plugins.Add(new AuthFeature(() => new MyServiceUserSession(), new IAuthProvider[] { new CredentialsAuthProvider() }));

            // Add registered users to the system
            var userRep = new InMemoryAuthRepository();
            foreach(Model.User user in Db.Users)
                userRep.CreateUserAuth(new UserAuth { Id = user.Id, UserName = user.Username }, user.Password);
            container.Register<IUserAuthRepository>(userRep);

            SetConfig(new HostConfig {
                DebugMode = true,
            });
        }
Пример #33
0
        public override void Configure(Container container)
        {
            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[]
            {
                //new BasicAuthProvider(), //Sign-in with HTTP Basic Auth
                new MyCredentialsAuthProvider()     //HTML Form post of UserName/Password credentials
            }));

            Plugins.Add(new RegistrationFeature());

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IUserAuthRepository>(userRep);
        }
Пример #34
0
        public static void Configure(ServiceStackHost appHost, Container container)
        {
            var appSettings = new AppSettings();

            var auth = new AuthFeature(() => new CustomUserSession(),
                                       new IAuthProvider[]
            {
                new CustomBasicAuthProvider(),
                new CredentialsAuthProvider(appSettings)
                {
                    SessionExpiry = TimeSpan.FromMinutes(30)
                }
            },
                                       "/login")
            {
                GenerateNewSessionCookiesOnAuthentication = false,
            };

            appHost.Plugins.Add(auth);

            IUserAuthRepository authRepository = new InMemoryAuthRepository();
            ICacheClient        cacheClient    = new MemoryCacheClient();

            var testUser = authRepository.CreateUserAuth(new UserAuth {
                Email = "*****@*****.**"
            }, "a");


            //IoC registrations
            container.Register(cacheClient);
            container.Register(authRepository);


            var hostConfig = new HostConfig
            {
#if DEBUG || STAGING || UAT
                DebugMode = true,
#endif
                AppendUtf8CharsetOnContentTypes = new HashSet <string> {
                    MimeTypes.Csv
                },
            };


            appHost.SetConfig(hostConfig);
        }
Пример #35
0
        // https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization
        private void ConfigureAuth(Funq.Container container)
        {
            Plugins.Add(new AuthFeature(null, new IAuthProvider[] {
                new CredentialsAuthProvider()
            }));

            container.Register<ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();
            container.Register<IUserAuthRepository>(userRep);

            #if DEBUG
            CreateUser(userRep, 1, "admin", "*****@*****.**", "password", null, null);
            #endif

            //The IUserAuthRepository is used to store the user credentials etc.
            //Implement this interface to adjust it to your application's data storage.
        }
        public void SetUp()
        {
			try
			{
                tests = new OAuthUserSessionTests();

                appHost = new BasicAppHost().Init();
                
                var inMemoryRepo = new InMemoryAuthRepository();
				inMemoryRepo.Clear();
				userAuthRepositorys.Add(inMemoryRepo);

                var appSettings = new AppSettings();
				var redisRepo = new RedisAuthRepository(new BasicRedisClientManager(new[] { appSettings.GetString("Redis.Host") ?? "localhost" }));
				redisRepo.Clear();
				userAuthRepositorys.Add(redisRepo);

				if (OAuthUserSessionTestsBase.UseSqlServer)
				{
					var connStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\App_Data\auth.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
					var sqlServerFactory = new OrmLiteConnectionFactory(connStr, SqlServerOrmLiteDialectProvider.Instance);
					var sqlServerRepo = new OrmLiteAuthRepository(sqlServerFactory);
					sqlServerRepo.DropAndReCreateTables();
				}
				else
				{
					var sqliteInMemoryRepo = new OrmLiteAuthRepository(dbFactory);

                    sqliteInMemoryRepo.InitSchema();
                    sqliteInMemoryRepo.Clear();
					userAuthRepositorys.Add(sqliteInMemoryRepo);

					var sqliteDbFactory = new OrmLiteConnectionFactory( 
						"~/App_Data/auth.sqlite".MapProjectPath()); 
                    var sqliteDbRepo = new OrmLiteAuthRepository(sqliteDbFactory);
                    sqliteDbRepo.InitSchema();
					userAuthRepositorys.Add(sqliteDbRepo);
				}
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex.Message);
				throw;
			}
		}
Пример #37
0
        public override void Configure(Container container)
        {
            Plugins.Add(new RazorFormat());

            //Works but recommend handling 404 at end of .NET Core pipeline
            //this.CustomErrorHttpHandlers[HttpStatusCode.NotFound] = new RazorHandler("/notfound");
            this.CustomErrorHttpHandlers[HttpStatusCode.Unauthorized] = new RazorHandler("/login");

            Plugins.Add(new AutoQueryFeature {
                MaxLimit = 100
            });

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] {
                new BasicAuthProvider(),       //Sign-in with HTTP Basic Auth
                new CredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
            })
            {
                IncludeAssignRoleServices  = false,
                IncludeRegistrationService = false,
                GenerateNewSessionCookiesOnAuthentication = true,
                DeleteSessionCookiesOnLogout = true
            });

            Plugins.Add(new RegistrationFeature());

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IUserAuthRepository>(userRep);

            userRep.CreateUserAuth(new UserAuth
            {
                FirstName   = "Jonathan",
                LastName    = "Someone",
                DisplayName = "Jonno",
                Email       = "*****@*****.**"
            }, "Secure1");

            SetConfig(new HostConfig
            {
                HandlerFactoryPath = "api",
                ApiVersion         = "1"
            });
        }
        public void SetUp()
        {
            try
            {
                tests = new OAuthUserSessionTests();
                var inMemoryRepo = new InMemoryAuthRepository();
                inMemoryRepo.Clear();
                userAuthRepositorys.Add(inMemoryRepo);

                var appSettings = new AppSettings();
                var redisRepo   = new RedisAuthRepository(new BasicRedisClientManager(new string[] { appSettings.GetString("Redis.Host") ?? "localhost" }));
                redisRepo.Clear();
                userAuthRepositorys.Add(redisRepo);

                if (OAuthUserSessionTestsBase.UseSqlServer)
                {
                    var connStr          = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\App_Data\auth.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                    var sqlServerFactory = new OrmLiteConnectionFactory(connStr, SqlServerOrmLiteDialectProvider.Instance);
                    var sqlServerRepo    = new OrmLiteAuthRepository(sqlServerFactory);
                    sqlServerRepo.DropAndReCreateTables();
                }
                else
                {
                    var sqliteInMemoryRepo = new OrmLiteAuthRepository(dbFactory);
                    using (var db = dbFactory.Open())
                    {
                        db.DropAndCreateTable <UserAuth>();
                        db.DropAndCreateTable <UserAuthDetails>();
                    }
                    sqliteInMemoryRepo.Clear();
                    userAuthRepositorys.Add(sqliteInMemoryRepo);

                    var sqliteDbFactory = new OrmLiteConnectionFactory(
                        "~/App_Data/auth.sqlite".MapProjectPath());
                    var sqliteDbRepo = new OrmLiteAuthRepository(sqliteDbFactory);
                    sqliteDbRepo.CreateMissingTables();
                    userAuthRepositorys.Add(sqliteDbRepo);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw;
            }
        }
Пример #39
0
        // https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization
        private void ConfigureAuth(Funq.Container container)
        {
            Plugins.Add(new AuthFeature(null, new IAuthProvider[] {
                new CredentialsAuthProvider()
            }));

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IUserAuthRepository>(userRep);

#if DEBUG
            CreateUser(userRep, 1, "admin", "*****@*****.**", "password", null, null);
#endif

            //The IUserAuthRepository is used to store the user credentials etc.
            //Implement this interface to adjust it to your application's data storage.
        }
Пример #40
0
        public override void Configure(Funq.Container container)
        {
            Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {
                new BasicAuthProvider(),
                new CredentialsAuthProvider(),
            }));
            Plugins.Add(new RegistrationFeature());

            container.Register<ICacheClient>(new MemoryCacheClient { FlushOnDispose = false });
            var userRep = new InMemoryAuthRepository();
            userRep.CreateUserAuth(
                new UserAuth {
                    UserName = "******",
                    Roles = new List<string> { "Admin" },
                },
                "deathstar");
            container.Register<IUserAuthRepository>(userRep);
        }
Пример #41
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any IoC resources utilized by your web service classes.
        /// </summary>
        public override void Configure(Container container)
        {
            var myDocStore = new DocumentStore
            {
                Urls     = new[] { "http://localhost:8080" },
                Database = databaseName,
            };

            myDocStore.Initialize();

            // Is UserManager database created?
            if (myDocStore.Maintenance.Server.Send(
                    new GetDatabaseNamesOperation(0, 200))
                .Count(x => x.EqualsIgnoreCase(databaseName)) == 0)
            {
                // No, then let's create it.
                myDocStore.Maintenance.Server.Send(
                    new CreateDatabaseOperation(
                        new DatabaseRecord(databaseName)
                        ));
            }
            container.AddSingleton <IDocumentStore>(implementationInstance: myDocStore);

            this.Plugins.Add(new AuthFeature(
                                 sessionFactory: () => new AuthUserSession(),
                                 authProviders: new IAuthProvider[] { new UserDataCredentialsAuthProvider() }));

            this.Plugins.Add(new RegistrationFeature());
            this.Plugins.Add(new RequestLogsFeature());
            this.Plugins.Add(new SwaggerFeature());
            this.Plugins.Add(new RazorFormat());

            container.Register <ICacheClient>(new MemoryCacheClient());
            var userRep = new InMemoryAuthRepository();

            container.Register <IAuthRepository>(userRep);

            container.RegisterAs <LogAuthEvents, IAuthEvents>();

            JsConfig <DateTime> .SerializeFn  = time => new DateTime(time.Ticks, DateTimeKind.Local).ToString("o");
            JsConfig <DateTime?> .SerializeFn =
                time => time != null ? new DateTime(time.Value.Ticks, DateTimeKind.Local).ToString("o") : null;
            JsConfig.DateHandler = DateHandler.ISO8601;
        }
        public void SetUp()
        {
            try
            {
                tests = new OAuthUserSessionTests();
                var inMemoryRepo = new InMemoryAuthRepository();
                inMemoryRepo.Clear();
                userAuthRepositorys.Add(inMemoryRepo);

                var redisRepo = new RedisAuthRepository(new BasicRedisClientManager());
                redisRepo.Clear();
                userAuthRepositorys.Add(redisRepo);

                if (OAuthUserSessionTests.UseSqlServer)
                {
                    var connStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\App_Data\auth.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                    var sqlServerFactory = new OrmLiteConnectionFactory(connStr, SqlServerOrmLiteDialectProvider.Instance);
                    var sqlServerRepo = new OrmLiteAuthRepository(sqlServerFactory);
                    sqlServerRepo.DropAndReCreateTables();
                }
                else
                {
                    var sqliteInMemoryRepo = new OrmLiteAuthRepository(dbFactory);
                    dbFactory.Exec(dbCmd => {
                        dbCmd.CreateTable<UserAuth>(true);
                        dbCmd.CreateTable<UserOAuthProvider>(true);
                    });
                    sqliteInMemoryRepo.Clear();
                    userAuthRepositorys.Add(sqliteInMemoryRepo);

                    var sqliteDbFactory = new OrmLiteConnectionFactory(
                        "~/App_Data/auth.sqlite".MapAbsolutePath());
                    var sqliteDbRepo = new OrmLiteAuthRepository(sqliteDbFactory);
                    sqliteDbRepo.CreateMissingTables();
                    userAuthRepositorys.Add(sqliteDbRepo);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw;
            }
        }
Пример #43
0
        public override void Configure(Funq.Container container)
        {
            // Add credentials provider and our custom session
            Plugins.Add(new AuthFeature(() => new MyServiceUserSession(), new IAuthProvider[] { new CredentialsAuthProvider() }));

            // Add registered users to the system
            var userRep = new InMemoryAuthRepository();

            foreach (Model.User user in Db.Users)
            {
                userRep.CreateUserAuth(new UserAuth {
                    Id = user.Id, UserName = user.Username
                }, user.Password);
            }
            container.Register <IUserAuthRepository>(userRep);

            SetConfig(new HostConfig {
                DebugMode = true,
            });
        }
        private static void RegisterUsers(InMemoryAuthRepository userRep)
        {
            // Create a series of fake users
            var usernames = new[] { "Cheetara", "Panthro", "Tygra" };

            foreach (var username in usernames)
            {
                // Create fake users
                if (userRep.GetUserAuthByUserName(username) == null)
                {
                    userRep.CreateUserAuth(new UserAuth
                    {
                        UserName = username,
                        FirstName = $"{username}_test",
                        LastName = "ThunderCat",
                        Roles = new List<string> { "test" }
                    }, "password");
                }
            }
        }
Пример #45
0
            public override void Configure(Funq.Container container)
            {
                Plugins.Add(new RazorFormat());

                Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                  new IAuthProvider[] { 
                    new CredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
                  }));


                var userRep = new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(userRep);

                UserAuth userDemo = new UserAuth
                {
                    UserName = "******"
                };

                userRep.CreateUserAuth(userDemo, "demo");
            }
Пример #46
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any IoC resources utilized by your web service classes.
        /// </summary>
        /// <param name="container"></param>
        public override void Configure(Container container)
        {
            //Config examples
            //this.Plugins.Add(new PostmanFeature());
            //this.Plugins.Add(new CorsFeature());

            this.Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[]
            {
                new BasicAuthProvider(),
                new CredentialsAuthProvider(),
            }));

            this.Plugins.Add(new RegistrationFeature());
            var userRepository = new InMemoryAuthRepository();

            container.Register <IAuthRepository>(userRepository);
            container.Register <ICacheClient>(new MemoryCacheClient());

            this.Plugins.Add(new RazorFormat());
        }
            public override void Configure(Container container)
            {
                Func<string, string> localize = s => HostContext.AppHost.ResolveLocalizedString(s, null);
                Plugins.Add(new SessionFeature());
                SetConfig(new HostConfig(){AllowSessionIdsInHttpParams = true});

                var appSettings = new AppSettings();

                var authFeature = new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider{ SkipPasswordVerificationForInProcessRequests = true }, new FacebookAuthProvider(appSettings) }) { HtmlRedirect = null };
                authFeature.IncludeAssignRoleServices = false;

                Plugins.Add(new ServerEventsFeature()
                {
                    LimitToAuthenticatedUsers = true,
                    NotifyChannelOfSubscriptions = false,
                });
                Plugins.Add(new RegistrationFeature());
                Plugins.Add(authFeature);
                var authRepo = new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(authRepo);
                authRepo.CreateUserAuth(new UserAuth() { UserName = "******" }, "testpassword");
            }
Пример #48
0
        private static void RegisterUsers(InMemoryAuthRepository userRep)
        {
            // Create a series of fake users
            var usernames = new[] { "Cheetara", "Panthro", "Tygra" };

            foreach (var username in usernames)
            {
                // Create fake users
                if (userRep.GetUserAuthByUserName(username) == null)
                {
                    userRep.CreateUserAuth(new UserAuth
                    {
                        UserName  = username,
                        FirstName = $"{username}_test",
                        LastName  = "ThunderCat",
                        Roles     = new List <string> {
                            "test"
                        }
                    }, "password");
                }
            }
        }
Пример #49
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any IoC resources utilized by your web service classes.
        /// </summary>
        /// <param name="container"></param>
        public override void Configure(Container container)
        {
            //Config examples
            //this.Plugins.Add(new PostmanFeature());
            //this.Plugins.Add(new CorsFeature());

            SetConfig(new HostConfig
            {
                DebugMode = AppSettings.Get("DebugMode", false),
                AddRedirectParamsToQueryString = true
            });

            this.Plugins.Add(new RazorFormat());
            this.Plugins.Add(new DiscourseFeature
            {
                LocalAuthUrl       = "/",
                DiscourseServerUrl = "http://discourse.layoric.org",
                DiscourseSsoSecret = "a_test_secret"
            });
            var inMemoryAuthRepo = new InMemoryAuthRepository();

            this.Register <IAuthRepository>(inMemoryAuthRepo);
            this.Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                             new IAuthProvider[]
            {
                new CustomAuth()
            }
                                             ));
            container.Register <ICacheClient>(new MemoryCacheClient());
            inMemoryAuthRepo.CreateUserAuth(
                new UserAuth {
                UserName = "******", DisplayName = "mythz", Email = "*****@*****.**"
            }, "Discourse1");
            inMemoryAuthRepo.CreateUserAuth(
                new UserAuth {
                UserName = "******", DisplayName = "dreid15", Email = "*****@*****.**"
            }, "Discourse1");
        }
        public override void Configure(Container container)
        {
            SetConfig(new HostConfig { WebHostUrl = _webHostUrl });

            Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                new IAuthProvider[] { //Www-Authenticate should contain basic auth, therefore register this provider first
                    new BasicAuthProvider(), //Sign-in with Basic Auth
                    new CredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
                    new CustomAuthProvider()
                }, "~/" + SystemConstants.LoginUrl));

            container.Register(new MemoryCacheClient());
            _userRep = new InMemoryAuthRepository();
            container.Register<IAuthRepository>(_userRep);

            if (_configureFn != null)
            {
                _configureFn(container);
            }

            CreateUser(1, SystemConstants.UserName, null, SystemConstants.Password, new List<string> { "TheRole" }, new List<string> { "ThePermission" });
            CreateUser(2, SystemConstants.UserNameWithSessionRedirect, null, SystemConstants.PasswordForSessionRedirect);
            CreateUser(3, null, SystemConstants.EmailBasedUsername, SystemConstants.PasswordForEmailBasedAccount);
        }
Пример #51
0
            public override void Configure(Container container)
            {
                Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {new BasicAuthProvider()}));
                container.Register<ICacheClient>(new MemoryCacheClient());
                var userRepository = new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(userRepository);

                //adding test user
                string hash;
                string salt;

                new SaltedHash().GetHashAndSaltString("password", out hash, out salt);
                //This is how we would add it from a registration page.
                userRepository.CreateUserAuth(
                    new UserAuth
                    {
                        Id = 1,
                        UserName = "******",
                        DisplayName = "joselito",
                        Email = "*****@*****.**",
                        PasswordHash = hash,
                        Salt = salt
                    }, "password");
            }
Пример #52
0
            public override void Configure(Funq.Container container)
            {
                //register any dependencies your services use, e.g:
                //container.Register<ICacheClient>(new MemoryCacheClient());

                //register the routes, can be in the configure of the asax too
                //Routes.Add<HelloWorld>("/Path");

                //Add the auth feature
                Plugins.Add(new AuthFeature(
                    () => new AuthUserSession(),
                    new IAuthProvider[] {new BasicAuthProvider()}));

                //Register the Validation Plugin
                Plugins.Add(new ValidationFeature());
                container.RegisterValidators(typeof(UnitSoldService).Assembly);

                //Register users
                Plugins.Add(new RegistrationFeature());

                //Add the cache container for the auth
                //container.Register<ICacheClient>(new MemoryCacheClient());

                //Caching with Redis
                //container.Register<IRedisClientsManager>(c => new PooledRedisClientManager());
                //container.Register<ICacheClient>(c => (ICacheClient) c.Resolve<IRedisClientsManager>().GetCacheClient());

                //Defines the user repository
                var userRepository =  new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(userRepository);

                //Add User

                //create hash and salt from password
                string hash;
                string salt;
                const string password = "******";
                new SaltedHash().GetHashAndSaltString(password, out hash, out salt);

                userRepository.CreateUserAuth(new UserAuth
                    {
                        Id = 1,
                        DisplayName = "Rafael",
                        Email = "*****@*****.**",
                        UserName = "******",
                        FirstName = "Rafael",
                        LastName = "Miceli",
                        Roles = new List<string> {RoleNames.Admin},
                        //Permissions = new List<string>{"GetStatus"},
                        PasswordHash = hash,
                        Salt = salt
                    }, password);

                //var dbConnectionFactory =
                //    new OrmLiteConnectionFactory(HttpContext.Current.Server.MapPath("~/App_Data/data.txt"), true, SqliteDialect.Provider);

                //container.Register<IDbConnectionFactory>(dbConnectionFactory);

                //container.RegisterAutoWired<UnitsRepository>();
            }
            public override void Configure(Funq.Container container)
            {
                Plugins.Add(
                    new AuthFeature(() =>
                        new AuthUserSession(),
                        new IAuthProvider[]
                        {
                            new DigestAuthProvider(),
                            new BasicAuthProvider()
                        }));

                Plugins.Add(new RegistrationFeature());
                Plugins.Add(new ValidationFeature());
                Plugins.Add(new RazorFormat());

                container.Register<ICaseRepository>(new InMemoryCaseRepository());
                container.Register<IReferenceValidator>(new ReferenceValidator(new InMemoryCaseRepository()));
                container.RegisterValidators(typeof(CaseValidator).Assembly);

                container.Register<ICacheClient>(new MemoryCacheClient());
                var userRep = new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(userRep);

                string hash;
                string salt;
                string password = "******";

                new SaltedHash().GetHashAndSaltString(password, out hash, out salt);

                userRep.CreateUserAuth(new UserAuth
                {
                    Id = 1,
                    FirstName = "Joe",
                    LastName = "Bloggs",
                    DisplayName = "Joe Bloggs",
                    UserName = "******",
                    Email = "*****@*****.**",
                    Salt = salt,
                    PasswordHash = hash
                }, password);
            }
Пример #54
0
            /* Uncomment to enable ServiceStack Authentication and CustomUserSession */
            private void ConfigureAuth(Funq.Container container)
            {
                var appSettings = new AppSettings();
                //Register all Authentication methods you want to enable for this web app.
                Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                    new IAuthProvider[] {
                   }
                ));
                Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                new IAuthProvider[] {
                new ShibbolethAuthProvider(),
                new TwitterAuthProvider(appSettings),
                new FacebookAuthProvider(appSettings),
                new GoogleOAuth2Provider(appSettings),
                })
                {
                    HtmlRedirect = "~/",
                    IncludeRegistrationService = true,
                    MaxLoginAttempts = appSettings.Get("MaxLoginAttempts", 5),
                });
                Plugins.Add(new RegistrationFeature());

                container.Register<ICacheClient>(new MemoryCacheClient());
                var userRep = new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(userRep);
                //Default route: /auth/{provider}
            }
        public void InitTests()
        {
            dbFactory = new OrmLiteConnectionFactory(":memory:", false, SqliteOrmLiteDialectProvider.Instance);
            dbFactory.Run(db => db.CreateTable<Comment>());

            var users = new InMemoryAuthRepository();

            personRepository = new PersonRepository(users, null);
            issueRepository = new IssueRepository(dbFactory, personRepository);

            // TODO add issues
        }
Пример #56
0
 public override IUserAuthRepository CreateAuthRepo()
 {
     var inMemoryRepo = new InMemoryAuthRepository();
     InitTest(inMemoryRepo);
     return inMemoryRepo;
 }
        public void InitTests()
        {
            dbFactory = new OrmLiteConnectionFactory(":memory:", false, SqliteOrmLiteDialectProvider.Instance);
            dbFactory.Run(db => db.CreateTable<Priority>());

            var users = new InMemoryAuthRepository();

            personRepository = new PersonRepository(users, null);
            ;
        }
            public override void Configure(Funq.Container container)
            {
                //to inject third-party IoC (for example for NInject use SrviceStack.ContainerAdapter.NInject)
                //IKernel kernel=new StandartKernel();
                //kernel.Bind<TrackedDataRepository>().ToSelf();
                //container.Adapter=new NinjectContainerAdapter(kernel);  -> provide a adapter layer for NInject to use in Funq

                Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                            new IAuthProvider[] { new BasicAuthProvider() ,
                                new TwitterAuthProvider(new AppSettings())}));

                Plugins.Add(new RegistrationFeature());

                //register validators
                Plugins.Add(new ValidationFeature());
                container.RegisterValidators(typeof(Common.Entry).Assembly, typeof(EntryService).Assembly);

                //request logs
                Plugins.Add(new RequestLogsFeature()); // added ability to view request via http:/..../requestlogs

                //cache registration
                container.Register<ICacheClient>(new MemoryCacheClient());
                container.Register<IRedisClientsManager>(new PooledRedisClientManager("localhost:6379"));
                //container.Register<ICacheClient>(r => (ICacheClient)r.Resolve<IRedisClientsManager>().GetCacheClient());

                var userRepository = new InMemoryAuthRepository();
                container.Register<IUserAuthRepository>(userRepository);

                string hash;
                string salt;
                new SaltedHash().GetHashAndSaltString("password1", out hash, out salt);

                userRepository.CreateUserAuth(new UserAuth()
                {
                    Id = 1,
                    DisplayName = "Joe user",
                    Email = "*****@*****.**",
                    UserName = "******",
                    LastName = "jname",
                    PasswordHash = hash,
                    Salt = salt,
                    Roles = new List<string> { RoleNames.Admin }//,
                    //Permissions = new List<string> { "GetStatus", "AddStatus" }
                }, "password1");

                //automatically inject in all public properties
                container.RegisterAutoWired<TrackedDataRepository>().ReusedWithin(Funq.ReuseScope.Default);
                container.RegisterAutoWired<TrackedDataRepository2>().ReusedWithin(Funq.ReuseScope.Default);

                var dbConFactory = new OrmLiteConnectionFactory(HttpContext.Current.Server.MapPath("~/App_Data/data.txt"), SqliteDialect.Provider)
                {
                    ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current)
                };
                container.Register<IDbConnectionFactory>(dbConFactory);

                SetConfig(new EndpointHostConfig { DebugMode = true });

                var mqService = new RedisMqServer(container.Resolve<IRedisClientsManager>());
                mqService.RegisterHandler<Entry>(ServiceController.ExecuteMessage);
                mqService.Start();

                //install Razor
                Plugins.Add(new RazorFormat());
            }
        public override void Configure(Funq.Container container)
        {
            JsConfig.EmitCamelCaseNames = true;
            JsConfig.IncludeNullValues = true;
            JsConfig.DateHandler = JsonDateHandler.ISO8601;

            LogManager.LogFactory = new ConsoleLogFactory();

            SetConfig(new EndpointHostConfig
                {
                    WsdlServiceNamespace = "",
                    AllowJsonpRequests = true,
                    DebugMode = true,
                    EnableFeatures = Feature.All.Remove(GetDisabledFeatures()),
                    CustomHttpHandlers = {
                        // Use the CmsRazorHandler to add theming capabilities
                        { HttpStatusCode.NotFound, new CmsRazorHandler("/notfound") }
                    }
                });

            //Authentication (see: https://github.com/ServiceStack/ServiceStack/blob/master/tests/ServiceStack.WebHost.Endpoints.Tests/AuthTests.cs)
            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                new IAuthProvider[] {
                  new BasicAuthProvider(), //Sign-in with Basic Auth
                }){ HtmlRedirect = null /* prevent redirect to login page, make the user login using basic auth prompt */ });
            userRepository = new InMemoryAuthRepository();
            container.Register<IUserAuthRepository>(userRepository);
            CreateUser(userRepository, 1, UserName, "DisplayName", null, Password);

            //Enable the validation feature and scan the service assembly for validators
            Plugins.Add(new ValidationFeature());
            container.RegisterValidators(typeof(Services.CategoryService).Assembly);

            //Razor (use CmsRazorFormat to add theming capabilities)
            Plugins.Add(new CmsRazorFormat());

            //Caching
            container.Register<ICacheClient>(new MemoryCacheClient());

            //Entity Repositories
            container.RegisterAs<CategoryServiceRepository, ICategoryServiceRepository>();
            container.RegisterAs<CustomerServiceRepository, ICustomerServiceRepository>();
            container.RegisterAs<CustomerCustomerDemoServiceRepository, ICustomerCustomerDemoServiceRepository>();
            container.RegisterAs<CustomerDemographicServiceRepository, ICustomerDemographicServiceRepository>();
            container.RegisterAs<EmployeeServiceRepository, IEmployeeServiceRepository>();
            container.RegisterAs<EmployeeTerritoryServiceRepository, IEmployeeTerritoryServiceRepository>();
            container.RegisterAs<OrderServiceRepository, IOrderServiceRepository>();
            container.RegisterAs<OrderDetailServiceRepository, IOrderDetailServiceRepository>();
            container.RegisterAs<ProductServiceRepository, IProductServiceRepository>();
            container.RegisterAs<RegionServiceRepository, IRegionServiceRepository>();
            container.RegisterAs<ShipperServiceRepository, IShipperServiceRepository>();
            container.RegisterAs<SupplierServiceRepository, ISupplierServiceRepository>();
            container.RegisterAs<TerritoryServiceRepository, ITerritoryServiceRepository>();

            //TypedList Repositories
            container.RegisterAs<TLSR.EmployeesByRegionAndTerritoryTypedListServiceRepository, TLSI.IEmployeesByRegionAndTerritoryTypedListServiceRepository>();

            //TypedView Repositories
            container.RegisterAs<TVSR.AlphabeticalListOfProductsTypedViewServiceRepository, TVSI.IAlphabeticalListOfProductsTypedViewServiceRepository>();
            container.RegisterAs<TVSR.CategorySalesFor1997TypedViewServiceRepository, TVSI.ICategorySalesFor1997TypedViewServiceRepository>();
            container.RegisterAs<TVSR.CurrentProductListTypedViewServiceRepository, TVSI.ICurrentProductListTypedViewServiceRepository>();
            container.RegisterAs<TVSR.CustomerAndSuppliersByCityTypedViewServiceRepository, TVSI.ICustomerAndSuppliersByCityTypedViewServiceRepository>();
            container.RegisterAs<TVSR.InvoicesTypedViewServiceRepository, TVSI.IInvoicesTypedViewServiceRepository>();
            container.RegisterAs<TVSR.OrderDetailsExtendedTypedViewServiceRepository, TVSI.IOrderDetailsExtendedTypedViewServiceRepository>();
            container.RegisterAs<TVSR.OrdersQryTypedViewServiceRepository, TVSI.IOrdersQryTypedViewServiceRepository>();
            container.RegisterAs<TVSR.OrderSubtotalTypedViewServiceRepository, TVSI.IOrderSubtotalTypedViewServiceRepository>();
            container.RegisterAs<TVSR.ProductsAboveAveragePriceTypedViewServiceRepository, TVSI.IProductsAboveAveragePriceTypedViewServiceRepository>();
            container.RegisterAs<TVSR.ProductSalesFor1997TypedViewServiceRepository, TVSI.IProductSalesFor1997TypedViewServiceRepository>();
            container.RegisterAs<TVSR.ProductsByCategoryTypedViewServiceRepository, TVSI.IProductsByCategoryTypedViewServiceRepository>();
            container.RegisterAs<TVSR.QuarterlyOrderTypedViewServiceRepository, TVSI.IQuarterlyOrderTypedViewServiceRepository>();
            container.RegisterAs<TVSR.SalesByCategoryTypedViewServiceRepository, TVSI.ISalesByCategoryTypedViewServiceRepository>();
            container.RegisterAs<TVSR.SalesTotalsByAmountTypedViewServiceRepository, TVSI.ISalesTotalsByAmountTypedViewServiceRepository>();
            container.RegisterAs<TVSR.SummaryOfSalesByQuarterTypedViewServiceRepository, TVSI.ISummaryOfSalesByQuarterTypedViewServiceRepository>();
            container.RegisterAs<TVSR.SummaryOfSalesByYearTypedViewServiceRepository, TVSI.ISummaryOfSalesByYearTypedViewServiceRepository>();

            //DataAccess / OrmLite
            var connectionString = ConfigurationManager.ConnectionStrings["ApiDbConnectionString"].ConnectionString;
            container.Register<IDataAccessAdapterFactory>(c => new DataAccessAdapterFactory(connectionString));
            container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(connectionString, true, new SqlServerOrmLiteDialectProvider()));

            //DataAccess Caching (only for LLBLGen V4)
            //CacheController.RegisterCache(string.Empty /* connectionString */, new ResultsetCache(5*60 /* will purge the cache every 5 minutes */));
        }
        public override void Configure(Funq.Container container)
        {
            JsConfig.EmitCamelCaseNames = true;
            JsConfig.IncludeNullValues = true;
            JsConfig.DateHandler = JsonDateHandler.ISO8601;

            LogManager.LogFactory = new DebugLogFactory();

            SetConfig(new EndpointHostConfig
            {
                WsdlServiceNamespace = "",
                AllowJsonpRequests = true,
                DebugMode = true,
                EnableFeatures = Feature.All.Remove(GetDisabledFeatures())
            });

            //Authentication (see: https://github.com/ServiceStack/ServiceStack/blob/master/tests/ServiceStack.WebHost.Endpoints.Tests/AuthTests.cs)
            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                new IAuthProvider[] {
                  new BasicAuthProvider(), //Sign-in with Basic Auth
                }) { HtmlRedirect = null /* prevent redirect to login page, make the user login using basic auth prompt */ });
            userRepository = new InMemoryAuthRepository();
            container.Register<IUserAuthRepository>(userRepository);
            CreateUser(userRepository, 1, UserName, "DisplayName", null, Password);

            //NEW: Enable the validation feature and scans the service assembly for validators
            Plugins.Add(new ValidationFeature());
            container.RegisterValidators(typeof(Northwind.Data.Services.CategoryService).Assembly);

            //Caching
            container.Register<ICacheClient>(new MemoryCacheClient());

            //Repositories
            container.RegisterAs<CategoryServiceRepository, ICategoryServiceRepository>();
            container.RegisterAs<CustomerServiceRepository, ICustomerServiceRepository>();
            container.RegisterAs<CustomerCustomerDemoServiceRepository, ICustomerCustomerDemoServiceRepository>();
            container.RegisterAs<CustomerDemographicServiceRepository, ICustomerDemographicServiceRepository>();
            container.RegisterAs<EmployeeServiceRepository, IEmployeeServiceRepository>();
            container.RegisterAs<EmployeeTerritoryServiceRepository, IEmployeeTerritoryServiceRepository>();
            container.RegisterAs<OrderServiceRepository, IOrderServiceRepository>();
            container.RegisterAs<OrderDetailServiceRepository, IOrderDetailServiceRepository>();
            container.RegisterAs<ProductServiceRepository, IProductServiceRepository>();
            container.RegisterAs<RegionServiceRepository, IRegionServiceRepository>();
            container.RegisterAs<ShipperServiceRepository, IShipperServiceRepository>();
            container.RegisterAs<SupplierServiceRepository, ISupplierServiceRepository>();
            container.RegisterAs<TerritoryServiceRepository, ITerritoryServiceRepository>();

            //DataAccess / OrmLite
            var connectionString = ConfigurationManager.ConnectionStrings["ApiDbConnectionString"].ConnectionString;
            container.Register<IDataAccessAdapterFactory>(c => new DataAccessAdapterFactory(connectionString));
            container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(connectionString, true, new SqlServerOrmLiteDialectProvider()));
        }