/// <summary> /// Configures the service. /// </summary> /// <param name="services">The services.</param> public static void ConfigureService(IServiceCollection services) { // Get configuration instance var authenticationSettings = services.BuildServiceProvider().GetRequiredService <AuthenticationSettings>(); // Swagger API documentation services.AddSwaggerGen(c => { // TODO: Need to push hardcoded strings to resource file c.SwaggerDoc("v1", new Info { Title = "Device Api", Version = "v1.0", Description = "Dotnet core multi tenant application", TermsOfService = "TODO: Add Terms of service", Contact = new Contact { Name = "Boris Zaikin", Email = "TODO: Add Contact email", Url = "https://github.com/Boriszn/DeviceManager.Api" }, License = new License { Name = "MIT License", Url = "https://opensource.org/licenses/MIT" } }); c.OperationFilter <TenantHeaderOperationFilter>(); c.OperationFilter <LocalizationQueryOperationFilter>(); c.OperationFilter <AuthorizeCheckOperationFilter>(authenticationSettings); c.SchemaFilter <SwaggerExcludeFilter>(); var xmlFile = $"{typeof(BaseController<>).Assembly.GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); #region Identity Server Authentication var authenticationServerUri = GenericHelper.GetUriFromEnvironmentVariable(DefaultConstants.AuthenticationAuthority); var authorizationUri = GenericHelper.CombineUri(authenticationServerUri, authenticationSettings.AuthorizationUrl); c.AddSecurityDefinition(DefaultConstants.OAuth2, new OAuth2Scheme { Flow = IdentityModel.OidcConstants.GrantTypes.Implicit, AuthorizationUrl = authorizationUri.ToString(), Scopes = new Dictionary <string, string> { { authenticationSettings.Scope, DefaultConstants.ApiDescription } } }); #endregion }); }