Esempio n. 1
0
        /// <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
            });
        }