Example #1
0
            public override void Configure(Container container)
            {
                LogManager.LogFactory = new ConsoleLogFactory(debugEnabled: true);

                MyJwtAuthProvider jwtprovider = new MyJwtAuthProvider
                {
                    HashAlgorithm = "RS256",
                    PrivateKeyXml = Environment.GetEnvironmentVariable(EnvironmentConstants.EB_JWT_PRIVATE_KEY_XML),
                    PublicKeyXml  = Environment.GetEnvironmentVariable(EnvironmentConstants.EB_JWT_PUBLIC_KEY_XML),
//#if (DEBUG)
                    RequireSecureConnection = false,
                    //EncryptPayload = true,
//#endif
                    ExpireTokensIn        = TimeSpan.FromSeconds(90),
                    ExpireRefreshTokensIn = TimeSpan.FromHours(24),
                    PersistSession        = true,
                    SessionExpiry         = TimeSpan.FromHours(12),

                    CreatePayloadFilter = (payload, session) =>
                    {
                        payload[TokenConstants.SUB] = (session as CustomUserSession).UserAuthId;
                        payload[TokenConstants.CID] = (session as CustomUserSession).CId;
                        payload[TokenConstants.UID] = (session as CustomUserSession).Uid.ToString();
                        payload[TokenConstants.WC]  = (session as CustomUserSession).WhichConsole;
                        payload[TokenConstants.IP]  = (session as CustomUserSession).SourceIp;
                    },

                    PopulateSessionFilter = (session, token, req) =>
                    {
                        var csession = session as CustomUserSession;
                        csession.UserAuthId   = token[TokenConstants.SUB];
                        csession.CId          = token[TokenConstants.CID];
                        csession.Uid          = Convert.ToInt32(token[TokenConstants.UID]);
                        csession.WhichConsole = token[TokenConstants.WC];
                        csession.SourceIp     = token[TokenConstants.IP];
                    }
                };

                this.Plugins.Add(new AuthFeature(() =>
                                                 new CustomUserSession(),
                                                 new IAuthProvider[]
                {
                    new MyCredentialsAuthProvider(AppSettings)
                    {
                        PersistSession = true
                    },
                    jwtprovider,
                }));

                string env = Environment.GetEnvironmentVariable(EnvironmentConstants.ASPNETCORE_ENVIRONMENT);


                var redisServer = Environment.GetEnvironmentVariable(EnvironmentConstants.EB_REDIS_SERVER);

                //if (env == "Staging")
                //{
                //    container.Register<IRedisClientsManager>(c => new RedisManagerPool(redisServer));
                //}
                //else
                //{
                var redisPassword         = Environment.GetEnvironmentVariable(EnvironmentConstants.EB_REDIS_PASSWORD);
                var redisPort             = Environment.GetEnvironmentVariable(EnvironmentConstants.EB_REDIS_PORT);
                var redisConnectionString = string.Format("redis://{0}@{1}:{2}", redisPassword, redisServer, redisPort);

                container.Register <IRedisClientsManager>(c => new RedisManagerPool(redisConnectionString));
                //}

                container.Register <IAuthRepository>(c => new MyRedisAuthRepository(c.Resolve <IRedisClientsManager>()));

                container.Register(c => c.Resolve <IRedisClientsManager>().GetCacheClient());
                container.Register <JwtAuthProvider>(jwtprovider);
                container.Register <IEbConnectionFactory>(c => new EbConnectionFactory(c)).ReusedWithin(ReuseScope.Request);

                this.GlobalRequestFilters.Add((req, res, requestDto) =>
                {
                    ILog log = LogManager.GetLogger(GetType());

                    try
                    {
                        if (requestDto.GetType() == typeof(Authenticate))
                        {
                            log.Info("In Authenticate");

                            string TenantId = (requestDto as Authenticate).Meta != null ? (requestDto as Authenticate).Meta[TokenConstants.CID] : CoreConstants.EXPRESSBASE;
                            log.Info(TenantId);
                            RequestContext.Instance.Items.Add(CoreConstants.SOLUTION_ID, TenantId);
                        }
                    }
                    catch (Exception e)
                    {
                        log.Info("ErrorStackTrace..........." + e.StackTrace);
                        log.Info("ErrorMessage..........." + e.Message);
                        log.Info("InnerException..........." + e.InnerException);
                    }
                });
            }
Example #2
0
        public override void Configure(Container container)
        {
            var co = this.Config;

            LogManager.LogFactory = new ConsoleLogFactory(debugEnabled: true);

            var jwtprovider = new MyJwtAuthProvider(AppSettings)
            {
                HashAlgorithm = "RS256",
                PrivateKeyXml = EbLiveSettings.PrivateKeyXml,
                PublicKeyXml  = EbLiveSettings.PublicKeyXml,
#if (DEBUG)
                RequireSecureConnection = false,
                //EncryptPayload = true,
#endif
                CreatePayloadFilter = (payload, session) =>
                {
                    payload["sub"] = (session as CustomUserSession).UserAuthId;
                    payload["cid"] = (session as CustomUserSession).CId;
                    payload["uid"] = (session as CustomUserSession).Uid.ToString();
                    payload["wc"]  = (session as CustomUserSession).WhichConsole;
                },

                ExpireTokensIn        = TimeSpan.FromHours(10),
                ExpireRefreshTokensIn = TimeSpan.FromHours(12),
                PersistSession        = true,
                SessionExpiry         = TimeSpan.FromHours(12)
            };

            this.Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type, Authorization, Access-Control-Allow-Origin, Access-Control-Allow-Credentials"));
            this.Plugins.Add(new ProtoBufFormat());

            Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                                        new IAuthProvider[] {
                new MyFacebookAuthProvider(AppSettings)
                {
                    AppId       = "151550788692231",
                    AppSecret   = "94ec1a04342e5cf7e7a971f2eb7ad7bc",
                    Permissions = new string[] { "email, public_profile" }
                },

                new MyTwitterAuthProvider(AppSettings)
                {
                    ConsumerKey    = "6G9gaYo7DMx1OHYRAcpmkPfvu",
                    ConsumerSecret = "Jx8uUIPeo5D0agjUnqkKHGQ4o6zTrwze9EcLtjDlOgLnuBaf9x",
                    // CallbackUrl = "http://*****:*****@{1}:{2}?ssl=true",
                                                      EbLiveSettings.RedisPassword, EbLiveSettings.RedisServer, EbLiveSettings.RedisPort);

            container.Register <IRedisClientsManager>(c => new RedisManagerPool(redisConnectionString));

            container.Register <IUserAuthRepository>(c => new EbRedisAuthRepository(c.Resolve <IRedisClientsManager>()));

            container.Register <JwtAuthProvider>(jwtprovider);

            container.Register <ITenantDbFactory>(c => new TenantDbFactory(c)).ReusedWithin(ReuseScope.Request);

            RabbitMqMessageFactory rabitFactory = new RabbitMqMessageFactory();

            rabitFactory.ConnectionFactory.UserName    = EbLiveSettings.RabbitUser;
            rabitFactory.ConnectionFactory.Password    = EbLiveSettings.RabbitPassword;
            rabitFactory.ConnectionFactory.HostName    = EbLiveSettings.RabbitHost;
            rabitFactory.ConnectionFactory.Port        = EbLiveSettings.RabbitPort;
            rabitFactory.ConnectionFactory.VirtualHost = EbLiveSettings.RabbitVHost;

            var mqServer = new RabbitMqServer(rabitFactory);

            mqServer.RetryCount = 1;
            //mqServer.RegisterHandler<EmailServicesMqRequest>(base.ExecuteMessage);
            //mqServer.RegisterHandler<RefreshSolutionConnectionsMqRequestTest>(base.ExecuteMessage);
            //mqServer.RegisterHandler<UploadFileMqRequestTest>(base.ExecuteMessage);
            //mqServer.RegisterHandler<ImageResizeMqRequestTest>(base.ExecuteMessage);
            //mqServer.RegisterHandler<FileMetaPersistMqRequestTest>(base.ExecuteMessage);
            //mqServer.RegisterHandler<SlackPostMqRequest>(base.ExecuteMessage);
            ////mqServer.RegisterHandler<SlackAuthMqRequest>(base.ExecuteMessage);

            mqServer.Start();

            container.AddScoped <IMessageProducer, RabbitMqProducer>(serviceProvider =>
            {
                return(mqServer.CreateMessageProducer() as RabbitMqProducer);
            });

            container.AddScoped <IMessageQueueClient, RabbitMqQueueClient>(serviceProvider =>
            {
                return(mqServer.CreateMessageQueueClient() as RabbitMqQueueClient);
            });

            //Add a request filter to check if the user has a session initialized
            this.GlobalRequestFilters.Add((req, res, requestDto) =>
            {
                ILog log = LogManager.GetLogger(GetType());

                log.Info("In GlobalRequestFilters");
                try
                {
                    if (requestDto.GetType() == typeof(Authenticate))
                    {
                        log.Info("In Authenticate");

                        string TenantId = (requestDto as Authenticate).Meta != null ? (requestDto as Authenticate).Meta["cid"] : "expressbase";
                        log.Info(TenantId);
                        RequestContext.Instance.Items.Add("TenantAccountId", TenantId);
                    }
                }catch (Exception e)
                {
                    log.Info("ErrorStackTrace..........." + e.StackTrace);
                    log.Info("ErrorMessage..........." + e.Message);
                    log.Info("InnerException..........." + e.InnerException);
                }
                try
                {
                    if (requestDto != null && requestDto.GetType() != typeof(Authenticate) && requestDto.GetType() != typeof(GetAccessToken) && requestDto.GetType() != typeof(UniqueRequest) && requestDto.GetType() != typeof(CreateAccountRequest) && requestDto.GetType() != typeof(EmailServicesRequest) && requestDto.GetType() != typeof(RegisterRequest))
                    {
                        var auth = req.Headers[HttpHeaders.Authorization];
                        if (string.IsNullOrEmpty(auth))
                        {
                            res.ReturnAuthRequired();
                        }
                        else
                        {
                            var jwtoken = new JwtSecurityToken(auth.Replace("Bearer", string.Empty).Trim());
                            foreach (var c in jwtoken.Claims)
                            {
                                if (c.Type == "cid" && !string.IsNullOrEmpty(c.Value))
                                {
                                    RequestContext.Instance.Items.Add("TenantAccountId", c.Value);
                                    if (requestDto is IEbSSRequest)
                                    {
                                        (requestDto as IEbSSRequest).TenantAccountId = c.Value;
                                    }
                                    if (requestDto is EbServiceStackRequest)
                                    {
                                        (requestDto as EbServiceStackRequest).TenantAccountId = c.Value;
                                    }
                                    continue;
                                }
                                if (c.Type == "uid" && !string.IsNullOrEmpty(c.Value))
                                {
                                    RequestContext.Instance.Items.Add("UserId", Convert.ToInt32(c.Value));
                                    if (requestDto is IEbSSRequest)
                                    {
                                        (requestDto as IEbSSRequest).UserId = Convert.ToInt32(c.Value);
                                    }
                                    if (requestDto is EbServiceStackRequest)
                                    {
                                        (requestDto as EbServiceStackRequest).UserId = Convert.ToInt32(c.Value);
                                    }
                                    continue;
                                }
                                if (c.Type == "wc" && !string.IsNullOrEmpty(c.Value))
                                {
                                    RequestContext.Instance.Items.Add("wc", c.Value);
                                    if (requestDto is EbServiceStackRequest)
                                    {
                                        (requestDto as EbServiceStackRequest).WhichConsole = c.Value.ToString();
                                    }
                                    continue;
                                }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    log.Info("ErrorStackTraceNontokenServices..........." + e.StackTrace);
                    log.Info("ErrorMessageNontokenServices..........." + e.Message);
                    log.Info("InnerExceptionNontokenServices..........." + e.InnerException);
                }
            });

            this.GlobalResponseFilters.Add((req, res, responseDto) =>
            {
                if (responseDto.GetResponseDto() != null)
                {
                    if (responseDto.GetResponseDto().GetType() == typeof(GetAccessTokenResponse))
                    {
                        res.SetSessionCookie("Token", (res.Dto as GetAccessTokenResponse).AccessToken);
                    }
                }
            });
        }