public void ConfigureServices(IServiceCollection services) { services.AddDiscoveryClient(Configuration); services.AddMvcCore().AddResponseFormatters(); var identityServerSettings = new IdentityServerSettings(); Configuration.Bind("IdentityServer", identityServerSettings); services.AddAuthentication("Bearer") .AddJwtBearer("Bearer", options => { options.Authority = identityServerSettings.Host; options.TokenValidationParameters = new TokenValidationParameters { ValidateAudience = false }; options.RequireHttpsMetadata = false; }); services.AddAuthorization(options => { options.AddPolicy("ApiScope", policy => { policy.RequireAuthenticatedUser(); policy.RequireClaim("scope", "eventlogapi"); }); }); services.AddSwaggerEx(ApplicationName); services.AddSingleton <IRepository <DeviceEvent> >(ioc => new Repository <DeviceEvent>( DeviceEventInitializer.Initialize())); }
public static void AddCustomizedIdentityServer4(this IServiceCollection services, IdentityServerSettings config, IHostingEnvironment Environment) { IdentityServerInMemomryConfig xConfig = MapJsonToConfig(config); services.AddIdentityCore <User>() .AddEntityFrameworkStores <ApplicationDBContext>() .AddDefaultTokenProviders() .AddUserManager <UserManager <User> >() .AddSignInManager <ApplicationSignInManager>(); services.Configure <IdentityOptions>(options => { options.Password.RequireDigit = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequireLowercase = false; } ); var builder = services.AddIdentityServer() .AddInMemoryIdentityResources(xConfig.IdentityResources) .AddInMemoryApiResources(xConfig.Apis) .AddInMemoryClients(xConfig.Clients) .AddAspNetIdentity <User>() .AddResourceOwnerValidator <ASPIdentityPasswordValidator <User> >(); if (Environment.IsDevelopment()) { builder.AddDeveloperSigningCredential(); } else { builder.AddDeveloperSigningCredential(); } }
public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(options => { options.ReturnHttpNotAcceptable = true; options.OutputFormatters.RemoveType <HttpNoContentOutputFormatter>(); options.InputFormatters.Add(new XmlSerializerInputFormatter(new MvcOptions())); options.OutputFormatters.Add(new XmlSerializerOutputFormatter()); options.FormatterMappings.SetMediaTypeMappingForFormat("xml", "application/xml"); }); services.AddControllers(); #region Health Checks services.AddHealthChecks(); services.AddHealthChecksUI().AddInMemoryStorage(); #endregion #region Identity Server Config IdentityServerSettings identityServerSettings = new IdentityServerSettings(); Configuration.GetSection("IdentityServerSettings").Bind(identityServerSettings); services.AddAuthentication("Bearer") .AddIdentityServerAuthentication("Bearer", options => { options.ApiName = identityServerSettings.ApiName; options.Authority = identityServerSettings.Authority; }); #endregion #region Swagger Config SwaggerGenSettings swaggerGenSettings = new SwaggerGenSettings(); Configuration.GetSection("SwaggerGenSettings").Bind(swaggerGenSettings); services.AddSwaggerGen(options => { options.SwaggerDoc(swaggerGenSettings.SwaggerDoc.name, swaggerGenSettings.SwaggerDoc.OpenApiInfo); SecurityDefinition securityDefinition = swaggerGenSettings.SecurityDefinition; Settings.Swagger.AuthorizationCode authorizationCode = securityDefinition.OpenApiSecurityScheme.AuthorizationCode; options.AddSecurityDefinition(securityDefinition.name, new OpenApiSecurityScheme { Type = securityDefinition.OpenApiSecurityScheme.SecuritySchemeType, Flows = new OpenApiOAuthFlows { AuthorizationCode = new OpenApiOAuthFlow { AuthorizationUrl = new Uri(authorizationCode.AuthorizationUrl), TokenUrl = new Uri(authorizationCode.TokenUrl), Scopes = authorizationCode.Scopes } } }); options.OperationFilter <AuthorizeCheckOperationFilter>(); }); #endregion #region Autofac Composition root // Install the container, using our configuration ContainerInstaller installer = new ContainerInstaller(); ContainerBuilder builder = installer.Install(); // Pull the .net core dependencies into the container, like controllers builder.Populate(services); IContainer container = builder.Build(); #endregion // return the IServiceProvider implementation return(new AutofacServiceProvider(container)); }
/// <summary> /// This method gets called by the runtime. Use this method to add services to the container. /// </summary> /// <param name="services"></param> public void ConfigureServices(IServiceCollection services) { var authenticationDbConnectionString = Configuration.GetConnectionString(ConnectionStringNameConstants.DefaultAuthenticationDatabase); services.AddScoped(options => { var dbClient = new MongoClient(authenticationDbConnectionString); return(dbClient.GetDatabase(DatabaseContextNameConstants.AuthenticationDbContext)); }); services.AddScoped(options => { var dbClient = options.GetService <IMongoDatabase>(); var users = dbClient.GetCollection <User>(DbCollectionNameConstants.Users); var userIndexesBuilder = Builders <User> .IndexKeys; var uniqueIndexOptions = new CreateIndexOptions(); uniqueIndexOptions.Unique = true; var emailIndex = new CreateIndexModel <User>(userIndexesBuilder.Ascending(user => user.Username), uniqueIndexOptions); users .Indexes .CreateOne(emailIndex); return(users); }); services.AddHostedService <DummyHostedService>(); services.AddScoped <IUserService, UserService>(); // Add authorization handler. services.AddScoped(typeof(IAuthorizationHandler), typeof(SolidUserRequirementHandler)); //services.AddScoped(typeof(IAuthorizationHandler), typeof(InRoleRequirementHandler)); // Add mediator. services.AddMediatR(typeof(Startup).GetTypeInfo().Assembly); // Request validation. services.AddScoped(typeof(IPipelineBehavior <,>), typeof(RequestValidationBehavior <,>)); // Get identity server 4 configuration. var identityServerSettings = new IdentityServerSettings(); Configuration.GetSection(AppSettingKeyConstants.IdentityServer).Bind(identityServerSettings); services.AddAuthorization(); services .AddIdentityServer() .AddMongoDatabaseAdapter(DatabaseContextNameConstants.AuthenticationDbContext, identityServerSettings.ClientsCollectionName, identityServerSettings.IdentityResourcesCollectionName, identityServerSettings.ApiResourcesCollectionName, identityServerSettings.PersistedGrantsCollectionName, provider => { var dbClient = new MongoClient(new MongoUrl(authenticationDbConnectionString)); return(dbClient.GetDatabase(identityServerSettings.DatabaseName)); }) .AddExpiredAccessTokenCleaner() .AddIdentityServerMongoDbService <AuthenticationDbService>().AddProfileService <ProfileService>() .AddResourceOwnerValidator <ResourceOwnerPasswordValidator>() .AddDeveloperSigningCredential(); // Add jwt validation. services .AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddIdentityServerAuthentication(options => { options.Authority = identityServerSettings.Authority; options.ApiSecret = identityServerSettings.ApiSecret; options.ApiName = "profile"; options.RequireHttpsMetadata = false; options.SaveToken = true; options.SupportedTokens = SupportedTokens.Reference; }); #if NETCOREAPP2_2 // Add jwt validation. services .AddMvc(options => { // only allow authenticated users var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .AddAuthenticationSchemes(IdentityServerAuthenticationDefaults.AuthenticationScheme) .AddRequirements(new SolidUserRequirement()) .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }) .AddJsonOptions(options => { var camelCasePropertyNamesContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.ContractResolver = camelCasePropertyNamesContractResolver; options.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Ignore; }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); #elif NETCOREAPP3_0 services .AddControllers(options => { ////only allow authenticated users var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .AddAuthenticationSchemes(IdentityServerAuthenticationDefaults.AuthenticationScheme) .AddRequirements(new SolidUserRequirement()) .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }) .AddFluentValidation(options => options.RegisterValidatorsFromAssembly(typeof(Startup).Assembly)) .AddNewtonsoftJson(options => { var camelCasePropertyNamesContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.ContractResolver = camelCasePropertyNamesContractResolver; options.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Ignore; }) .SetCompatibilityVersion(CompatibilityVersion.Version_3_0); #endif }
public AuthService(IOptions <IdentityServerSettings> options, HttpClient client) { _client = client; _serverSettings = options.Value; }
public AccountController() { IdentityServerSettings = IdentityServerSettings.Insance; }
public ConfigService(IMapper mapper, ConfigurationDbContext context, IOptions <IdentityServerSettings> settings) { this.mapper = mapper; this.context = context; this.settings = settings.Value; }
public LoginController(IHttpClientFactory httpClientFactory, IOptions <IdentityServerSettings> identityServerOptions) { _httpClientFactory = httpClientFactory; _identityServerSettings = identityServerOptions.Value; }
public AccountsController(UserManager <ApplicationUser> userManager, ApplicationDbContext appDbContext, IOptions <IdentityServerSettings> identityServerSettings) { this.userManager = userManager; this.appDbContext = appDbContext; this.identityServerSettings = identityServerSettings.Value; }