Beispiel #1
0
        public static IApplicationBuilder UseAuthentication(
            this IApplicationBuilder applicationBuilder,
            AuthenticationMiddlewareOptions authenticationOptions)
        {
            if (applicationBuilder == null)
            {
                throw new ArgumentNullException(nameof(applicationBuilder));
            }

            if (authenticationOptions == null)
            {
                throw new ArgumentNullException(nameof(authenticationOptions));
            }

            return(applicationBuilder.UseMiddleware <AuthenticationMiddleware <AuthenticationMiddlewareOptions> >(Options.Create(authenticationOptions)));
        }
        public Startup(IHostingEnvironment env)
        {
            // Load all the configuration information from the "json" file & the environment variables.
            var builder = new ConfigurationBuilder()
                          .AddJsonFile("appsettings.json")
                          .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                          .AddEnvironmentVariables();

            Configuration          = builder.Build();
            _authenticationOptions = new AuthenticationMiddlewareOptions
            {
                IdServer = new IdServerOptions
                {
                    ExternalLoginCallback = "/Authenticate/LoginCallback",
                    LoginUrls             = new List <string>
                    {
                        "/Authenticate",
                        "/Authenticate/ExternalLogin",
                        "/Authenticate/OpenId",
                        "/Authenticate/LocalLoginOpenId",
                        "/Authenticate/LocalLogin",
                        "/Authenticate/ExternalLoginOpenId"
                    }
                },
                ConfigurationEdp = new ConfigurationEdpOptions
                {
                    ConfigurationUrl = Configuration["ConfigurationEdp:Url"],
                    ClientId         = Configuration["ConfigurationEdp:ClientId"],
                    ClientSecret     = Configuration["ConfigurationEdp:ClientSecret"],
                    Scopes           = new List <string>
                    {
                        "display_configuration"
                    }
                }
            };
            var twoFactorServiceStore = new TwoFactorServiceStore();
            var factory = new SimpleIdServerConfigurationClientFactory();

            twoFactorServiceStore.Add(new DefaultTwilioSmsService(factory, Configuration["ConfigurationEdp:Url"]));
            twoFactorServiceStore.Add(new DefaultEmailService(factory, Configuration["ConfigurationEdp:Url"]));
            _options = new IdentityServerOptions
            {
                IsDeveloperModeEnabled = false,
                DataSource             = new DataSourceOptions
                {
                    IsOpenIdDataMigrated   = true,
                    IsEvtStoreDataMigrated = true,
                },
                Logging = new LoggingOptions
                {
                    ElasticsearchOptions = new ElasticsearchOptions(),
                    FileLogOptions       = new FileLogOptions()
                },
                Authenticate = new AuthenticateOptions
                {
                    CookieName = Constants.CookieName
                },
                Scim = new ScimOptions
                {
                    IsEnabled = true,
                    EndPoint  = "http://localhost:5555/"
                },
                TwoFactorServiceStore = twoFactorServiceStore
            };

            var openIdType   = Configuration["Db:OpenIdType"];
            var evtStoreType = Configuration["Db:EvtStoreType"];

            if (string.Equals(openIdType, "SQLSERVER", System.StringComparison.CurrentCultureIgnoreCase))
            {
                _options.DataSource.OpenIdDataSourceType   = DataSourceTypes.SqlServer;
                _options.DataSource.OpenIdConnectionString = Configuration["Db:OpenIdConnectionString"];
            }
            else if (string.Equals(openIdType, "SQLITE", System.StringComparison.CurrentCultureIgnoreCase))
            {
                _options.DataSource.OpenIdDataSourceType   = DataSourceTypes.SqlLite;
                _options.DataSource.OpenIdConnectionString = Configuration["Db:OpenIdConnectionString"];
            }
            else if (string.Equals(openIdType, "POSTGRE", System.StringComparison.CurrentCultureIgnoreCase))
            {
                _options.DataSource.OpenIdDataSourceType   = DataSourceTypes.Postgre;
                _options.DataSource.OpenIdConnectionString = Configuration["Db:OpenIdConnectionString"];
            }
            else
            {
                _options.DataSource.OpenIdDataSourceType = DataSourceTypes.InMemory;
            }

            if (string.Equals(evtStoreType, "SQLSERVER", System.StringComparison.CurrentCultureIgnoreCase))
            {
                _options.DataSource.EvtStoreDataSourceType   = DataSourceTypes.SqlServer;
                _options.DataSource.EvtStoreConnectionString = Configuration["Db:EvtStoreConnectionString"];
            }
            else if (string.Equals(evtStoreType, "SQLITE", System.StringComparison.CurrentCultureIgnoreCase))
            {
                _options.DataSource.EvtStoreDataSourceType   = DataSourceTypes.SqlLite;
                _options.DataSource.EvtStoreConnectionString = Configuration["Db:EvtStoreConnectionString"];
            }
            else if (string.Equals(evtStoreType, "POSTGRE", System.StringComparison.CurrentCultureIgnoreCase))
            {
                _options.DataSource.EvtStoreDataSourceType   = DataSourceTypes.Postgre;
                _options.DataSource.EvtStoreConnectionString = Configuration["Db:EvtStoreConnectionString"];
            }
            else
            {
                _options.DataSource.EvtStoreDataSourceType = DataSourceTypes.InMemory;
            }

            bool isLogFileEnabled,
                 isElasticSearchEnabled;

            if (bool.TryParse(Configuration["Log:File:Enabled"], out isLogFileEnabled))
            {
                _options.Logging.FileLogOptions.IsEnabled = isLogFileEnabled;
                if (isLogFileEnabled)
                {
                    _options.Logging.FileLogOptions.PathFormat = Configuration["Log:File:PathFormat"];
                }
            }

            if (bool.TryParse(Configuration["Log:Elasticsearch:Enabled"], out isElasticSearchEnabled))
            {
                _options.Logging.ElasticsearchOptions.IsEnabled = isElasticSearchEnabled;
                if (isElasticSearchEnabled)
                {
                    _options.Logging.ElasticsearchOptions.Url = Configuration["Log:Elasticsearch:Url"];
                }
            }
        }