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); } }); }
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); } } }); }