public void Apply(OpenApiOperation operation, OperationFilterContext context) { IEnumerable <AuthorizeAttribute> authorizeAttributes = new List <AuthorizeAttribute>(); // Determine if the operation has the Authorize attribute if (context.ApiDescription.ActionDescriptor is ControllerActionDescriptor) { authorizeAttributes = ((ControllerActionDescriptor)context.ApiDescription.ActionDescriptor).MethodInfo.ReflectedType.GetCustomAttributes(typeof(AuthorizeAttribute), true).Select(a => (AuthorizeAttribute)a); } authorizeAttributes = authorizeAttributes.Concat(context.MethodInfo.GetCustomAttributes(true).OfType <AuthorizeAttribute>().Select(a => (AuthorizeAttribute)a)); if (!authorizeAttributes.Any()) { return; } // Initialize the operation.security property if (operation.Security == null) { operation.Security = new List <OpenApiSecurityRequirement>(); } // Add the appropriate security definition to the operation var securityRequirements = new OpenApiSecurityRequirement(); foreach (var item in authorizeAttributes) { if (item.AuthenticationSchemes == null || item.AuthenticationSchemes.Contains(JwtBearerDefaults.AuthenticationScheme)) { if (!securityRequirements.ContainsKey(SwaggerSecuritySchemes.BearerReference)) { securityRequirements.Add(SwaggerSecuritySchemes.BearerReference, new List <string>()); } } if (item.AuthenticationSchemes == null || item.AuthenticationSchemes.Contains(CookieAuthenticationDefaults.AuthenticationScheme)) { if (!securityRequirements.ContainsKey(SwaggerSecuritySchemes.CookiesReference)) { securityRequirements.Add(SwaggerSecuritySchemes.CookiesReference, new List <string>()); } } if (item.AuthenticationSchemes == null || item.AuthenticationSchemes.Contains(BasicAuthenticationDefaults.AuthenticationScheme)) { if (!securityRequirements.ContainsKey(SwaggerSecuritySchemes.BasicReference)) { securityRequirements.Add(SwaggerSecuritySchemes.BasicReference, new List <string>()); } } } if (securityRequirements.Count() == 0) { securityRequirements.Add(SwaggerSecuritySchemes.CookiesReference, new List <string>()); } operation.Security.Add(securityRequirements); }
public void Apply(OpenApiOperation operation, OperationFilterContext context) { //AllowAnonymous at Controller or Action level always takes priority! var allowAnonymous = context.MethodInfo.ReflectedType.GetCustomAttributes(true) .Union(context.MethodInfo.GetCustomAttributes(true)) .OfType <AllowAnonymousAttribute>().Any(); //https://github.com/domaindrivendev/Swashbuckle.AspNetCore //AuthorizeAttributes are AND not OR. var authAttributes = context.MethodInfo.ReflectedType.GetCustomAttributes(true) .Union(context.MethodInfo.GetCustomAttributes(true)) .OfType <AuthorizeAttribute>(); if (allowAnonymous || !authAttributes.Any()) { return; } // Initialize the operation.security property if (operation.Security == null) { operation.Security = new List <OpenApiSecurityRequirement>(); } // Add the appropriate security definition to the operation var securityRequirements = new OpenApiSecurityRequirement(); //If no scheme is specified any scheme can be used. foreach (var item in authAttributes) { if (item.AuthenticationSchemes == null || item.AuthenticationSchemes.Contains(JwtBearerDefaults.AuthenticationScheme)) { if (!securityRequirements.ContainsKey(SwaggerSecuritySchemes.BearerReference)) { securityRequirements.Add(SwaggerSecuritySchemes.BearerReference, new List <string>()); } } if (item.AuthenticationSchemes == null || item.AuthenticationSchemes.Contains(CookieAuthenticationDefaults.AuthenticationScheme)) { if (!securityRequirements.ContainsKey(SwaggerSecuritySchemes.CookiesReference)) { securityRequirements.Add(SwaggerSecuritySchemes.CookiesReference, new List <string>()); } } if (item.AuthenticationSchemes == null || item.AuthenticationSchemes.Contains(BasicAuthenticationDefaults.AuthenticationScheme)) { if (!securityRequirements.ContainsKey(SwaggerSecuritySchemes.BasicReference)) { securityRequirements.Add(SwaggerSecuritySchemes.BasicReference, new List <string>()); } } } operation.Security.Add(securityRequirements); }
public static void ConfigureSwagger(this IServiceCollection services) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Org.ERM API", Version = "v1" }); var securityScheme = new OpenApiSecurityScheme() { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = "bearer", }; c.AddSecurityDefinition("Bearer", securityScheme); // Add security requirements globally. If needs to be unique per operation then use IOperationFilter. var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securityScheme, new string[] { }); c.AddSecurityRequirement(securityRequirement); }); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddSingleton <DBContext>(); services.AddScoped <IUserRepository, UserRepository>(); services.AddScoped <UserService>(); services.AddJwtAuthentication(Configuration); services.AddControllers(); services.AddHealthChecks().AddMongoDb(Configuration.GetValue <string>("MongoDBConnectionString")); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Auth", Version = "v1" }); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); c.AddSecurityRequirement(securityRequirement); }); }
private OpenApiSecurityRequirement GetSecurity(IEnumerable <string> requiredScopes) { var requirements = new OpenApiSecurityRequirement(); var scopes = IdentityServiceScopes .ScopeDescriptions .Where(x => requiredScopes.Contains(x.Key)) .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); var oauth2 = new OpenApiSecurityScheme { Reference = new OpenApiReference() { Type = ReferenceType.SecurityScheme, Id = "oauth2" } }; //var jwt = new OpenApiSecurityScheme //{ // Description = "IdentityService Jwt", // In = ParameterLocation.Header, // Type = SecuritySchemeType.Http //}; requirements.Add(oauth2, requiredScopes.ToList()); //requirements.Add(jwt, requiredScopes.ToList()); return(requirements); }
public static void AddSwagger(this IServiceCollection service) { service.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "API", Description = "Clean Architecture", Contact = new OpenApiContact() { Name = "Berkay Yerdelen", Email = "*****@*****.**" } }); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); c.AddSecurityRequirement(securityRequirement); }); }
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context) { var flows = new OpenApiOAuthFlows(); flows.ClientCredentials = new OpenApiOAuthFlow() { //AuthorizationUrl = new Uri(OAuthSettings.Auth, UriKind.Absolute), TokenUrl = new Uri(OAuthSettings.OktaTokenUrl, UriKind.Absolute), Scopes = OAuthSettings.Scopes }; var oauthScheme = new OpenApiSecurityScheme() { Type = SecuritySchemeType.OAuth2, Description = "OAuth2 Description", Name = "Authorization", In = ParameterLocation.Header, Flows = flows, Scheme = OAuthSettings.SchemeName }; var securityrRequirements = new OpenApiSecurityRequirement(); securityrRequirements.Add(oauthScheme, new List <string>() { "Bearer" }); swaggerDoc.SecurityRequirements.Add(securityrRequirements); }
public static IHostBuilder CreateWebHostBuilder(string[] args) { return (Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureServices(x => { x.AddFrameworkService(); x.AddLayui(); x.AddSignalR(); x.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); var bearer = new OpenApiSecurityScheme() { Description = "JWT Bearer", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey }; c.AddSecurityDefinition("Bearer", bearer); var sr = new OpenApiSecurityRequirement(); sr.Add(new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new string[] { }); c.AddSecurityRequirement(sr); }); }); webBuilder.Configure(x => { var configs = x.ApplicationServices.GetRequiredService <Configs>(); if (configs.IsQuickDebug == true) { x.UseSwagger(); x.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); }); } x.UseFrameworkService(); //添加WebSocket支持,SignalR优先使用WebSocket传输 x.UseWebSockets(); x.UseEndpoints(routes => { routes.MapHub <ClientNotifyHub>("/signalr"); }); }); } )); }
public void InstallerServices(IServiceCollection services, IConfiguration configuration) { services.AddSwaggerGen(x => { x.SwaggerDoc("v1", new OpenApiInfo { Title = "News API", Version = "v1" }); var security = new OpenApiSecurityRequirement(); security.Add(new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" }, Scheme = "Bearer", Name = "Bearer", In = ParameterLocation.Header }, new List <string>()); x.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { Scheme = "Bearer", Description = "JWT Authorization header using the bearer scheme", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey }); x.AddSecurityRequirement(security); }); }
private static void AddSwagger(this IServiceCollection services) { services.AddSwaggerGen(s => { s.SwaggerDoc("v1", new OpenApiInfo { Title = "League Draft", Version = "v1" }); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; s.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); //s.AddSecurityRequirement(securityRequirement); //var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; //var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); //s.IncludeXmlComments(xmlPath); }); }
public static void AddSwagger(this IServiceCollection services, string name, string titleDoc, string version) { services.AddSwaggerGen(c => { c.SwaggerDoc(name, new OpenApiInfo { Title = titleDoc, Version = version }); var securityScheme = new OpenApiSecurityScheme { Description = @"JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below. \r\n\r\nExample: 'Bearer 12345abcdef'", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", securityScheme); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securityScheme, new[] { "Bearer" }); c.AddSecurityRequirement(securityRequirement); }); }
public void Apply(OpenApiOperation operation, OperationFilterContext context) { //获取是否添加登录特性 var authAttributes = context.MethodInfo.DeclaringType.GetCustomAttributes(true) .Union(context.MethodInfo.GetCustomAttributes(true)) .OfType <AuthorizeAttribute>().Any(); if (authAttributes) { operation.Responses.Add("401", new OpenApiResponse { Description = "暂无访问权限" }); operation.Responses.Add("403", new OpenApiResponse { Description = "禁止访问" }); //给api添加锁的标注 var item = new OpenApiSecurityRequirement(); var key = new OpenApiSecurityScheme(); key.Name = "oauth2"; key.Type = SecuritySchemeType.OpenIdConnect; item.Add(key, new[] { "JsPortalResource" }); operation.Security = new List <OpenApiSecurityRequirement> { item }; } }
public static void AddOAuthSecurity(this Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenOptions setup) { var flows = new OpenApiOAuthFlows(); flows.ClientCredentials = new OpenApiOAuthFlow() { TokenUrl = new Uri(OAuthSettings.TokenUrl, UriKind.Relative), Scopes = OAuthSettings.Scopes }; var oauthScheme = new OpenApiSecurityScheme() { Type = SecuritySchemeType.OAuth2, Description = "OAuth2 Description", Name = OAuthSettings.AuthHeaderName, In = ParameterLocation.Query, Flows = flows, Scheme = OAuthSettings.SchemeName, }; //securityrDefinition setup.AddSecurityDefinition("Bearer", oauthScheme); //securityrRequirements var securityrRequirements = new OpenApiSecurityRequirement(); securityrRequirements.Add(oauthScheme, new List <string>() { }); setup.AddSecurityRequirement(securityrRequirements); }
public static IServiceCollection AddSwaggerConfiguration(this IServiceCollection services) { services.AddSwaggerGen(s => { s.SwaggerDoc("Usuario", new OpenApiInfo { Title = "Usuarios", Version = "v1" }); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "bearer" } }; s.AddSecurityDefinition("bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "bearer" }); s.AddSecurityRequirement(securityRequirement); }); return(services); }
public static OpenApiSecurityRequirement LoadSecurityRequirement(ParseNode node) { var mapNode = node.CheckMapNode("security"); var securityRequirement = new OpenApiSecurityRequirement(); foreach (var property in mapNode) { var scheme = LoadSecuritySchemeByReference( mapNode.Context, mapNode.Diagnostic, property.Name); var scopes = property.Value.CreateSimpleList(value => value.GetScalarValue()); if (scheme != null) { securityRequirement.Add(scheme, scopes); } else { node.Diagnostic.Errors.Add( new OpenApiError(node.Context.GetLocation(), $"Scheme {property.Name} is not found")); } } return(securityRequirement); }
public static void AddHmcrSwagger(this IServiceCollection services, IWebHostEnvironment env) { services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "HMCR REST API", Description = "Highway Maintenance Contract Reporting System" }); var filePath = Path.Combine(System.AppContext.BaseDirectory, "Hmcr.Api.xml"); options.IncludeXmlComments(filePath); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; options.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); options.AddSecurityRequirement(securityRequirement); }); }
public static IServiceCollection AddSwaggerServices(this IServiceCollection services) { services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo { Title = "ShareHope", Version = "v1" }); options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { Description = "JWT Authorization header using the bearer scheme", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey }); var security = new OpenApiSecurityRequirement(); security.Add(new OpenApiSecurityScheme { Name = "Bearer" }, new List <string>()); options.AddSecurityRequirement(security); }); return(services); }
private void SetupSwagger(IServiceCollection services) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "ASIC API", Version = "v1" }); var scheme = new OpenApiSecurityScheme() { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = "Bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" }, }; c.AddSecurityDefinition("Bearer", scheme); var openApiSecurityReq = new OpenApiSecurityRequirement(); openApiSecurityReq.Add(scheme, new List <string>()); c.AddSecurityRequirement(openApiSecurityReq); }); }
private void ConfigurationSwagger(IServiceCollection services) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); var currentDir = new DirectoryInfo(AppContext.BaseDirectory); foreach (var xmlCommentFile in currentDir.EnumerateFiles("VirtualRoulette.*.xml")) { c.IncludeXmlComments(xmlCommentFile.FullName); } var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); c.AddSecurityRequirement(securityRequirement); }); }
/// <summary> /// Adds Swagger services and configures the Swagger services. /// </summary> public static IServiceCollection AddSwaggerOptionService(this IServiceCollection services) { services.AddSwaggerGen(options => { var assembly = typeof(Startup).Assembly; var assemblyProduct = assembly.GetCustomAttribute <AssemblyProductAttribute>().Product; var assemblyDescription = assembly.GetCustomAttribute <AssemblyDescriptionAttribute>()?.Description; options.DescribeAllParametersInCamelCase(); options.OperationFilter <ApiVersionOperationFilter>(); // Set the comments path for the Swagger JSON and UI. var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlPath = System.IO.Path.Combine(System.AppContext.BaseDirectory, xmlFile); options.IncludeXmlComments(xmlPath); var provider = services.BuildServiceProvider().GetRequiredService <IApiVersionDescriptionProvider>(); foreach (var apiVersionDescription in provider.ApiVersionDescriptions) { if (apiVersionDescription.IsDeprecated) { continue; } var info = new OpenApiInfo() { Title = assemblyProduct, Description = apiVersionDescription.IsDeprecated ? $"{assemblyDescription} This API version has been deprecated." : assemblyDescription, Version = apiVersionDescription.ApiVersion.ToString(), }; options.SwaggerDoc(apiVersionDescription.GroupName, info); } //https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1295 //https://stackoverflow.com/questions/58197244/swaggerui-with-netcore-3-0-bearer-token-authorization //options.OperationFilter<TokenOperationFilter>(); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; options.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); options.AddSecurityRequirement(securityRequirement); }); return(services); }
public static IServiceCollection AddSwaggerDocumentation(this IServiceCollection services) { services.AddSwaggerGen(c => { var securitySchema = new OpenApiSecurityScheme() { Description = "在下框中输入请求头中需要添加授权Token", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, Array.Empty <string>()); c.AddSecurityRequirement(securityRequirement); c.SwaggerDoc("v1", new OpenApiInfo { Title = "DR API", Version = "v1" }); c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "DR.WebApi.xml"), true); //添加控制器层注释(true表示显示控制器注释) c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "DR.Models.xml"), true); //添加控制器层注释(true表示显示控制器注释) c.IgnoreObsoleteActions(); }); return(services); }
public void InstallServices(IServiceCollection services, IConfiguration configuration) { var swaggerSettings = new SwaggerSettings(); configuration.GetSection(nameof(SwaggerSettings)).Bind(swaggerSettings); services.AddSwaggerGen(settings => { var security = new OpenApiSecurityRequirement(); var securityScheme = new OpenApiSecurityScheme() { Description = "Using Bearer Authorization", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey }; security.Add(securityScheme, new List <string>() { }); settings.SwaggerDoc("V1", new Microsoft.OpenApi.Models.OpenApiInfo() { Description = swaggerSettings.Description, Version = "V1", Title = "MarketIO" }); settings.AddSecurityDefinition("Bearer", securityScheme); settings.AddSecurityRequirement(security); }); services.AddControllers(); }
/// <summary> /// Registers dependencies needed to provide a Swagger documentation to a API which accepts /// bearer authentication. /// </summary> /// <param name="services">The services.</param> /// <param name="apiName">Name of the API.</param> /// <param name="apiVersion">The API version.</param> /// <param name="apiDescription">The API description.</param> /// <param name="assemblyName">Name of the assembly.</param> public static void AddSwaggerJsonAndUiBearerApi(this IServiceCollection services, string apiName, string apiVersion, string apiDescription, string?assemblyName = null) { services.AddSwaggerJsonAndUi(apiName, apiVersion, apiDescription, (options) => { var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; options.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); options.AddSecurityRequirement(securityRequirement); }, assemblyName); }
public static IHostBuilder CreateWebHostBuilder(string[] args) { return (Host.CreateDefaultBuilder(args) .ConfigureLogging((hostingContext, logging) => { logging.ClearProviders(); logging.AddConsole(); logging.AddDebug(); logging.AddWTMLogger(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureServices(x => { x.AddFrameworkService(); x.AddLayui(); x.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); var bearer = new OpenApiSecurityScheme() { Description = "JWT Bearer", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey }; c.AddSecurityDefinition("Bearer", bearer); var sr = new OpenApiSecurityRequirement(); sr.Add(new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new string[] { }); c.AddSecurityRequirement(sr); }); x.AddRazorPages().AddRazorRuntimeCompilation(); }); webBuilder.Configure(x => { var configs = x.ApplicationServices.GetRequiredService <Configs>(); if (configs.IsQuickDebug == true) { x.UseSwagger(); x.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); }); } x.UseFrameworkService(); }); } )); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers(); var settings = Configurations.GetAppSettings().Build().GetSection("JwtSettings").Get <JwtSettings>(); var key = Encoding.ASCII.GetBytes(settings.SigningKey); services.AddAuthentication(c => { c.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; c.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(c => { c.RequireHttpsMetadata = false; c.SaveToken = true; c.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "eReferee - Server", Version = "v1", Contact = new OpenApiContact { Name = "Sandro Ferreira", Email = string.Empty, Url = new System.Uri("https://github.com/scafer") } }); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); c.AddSecurityRequirement(securityRequirement); }); }
public static void ConfigSwagger(this IServiceCollection services) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "ToDo API", }); c.SwaggerDoc("v2", new OpenApiInfo { Version = "v2", Title = "POS API", Description = "A simple example ASP.NET Core Web API", TermsOfService = new Uri("http://codemobiles.com"), Contact = new OpenApiContact { Name = "iBlur Blur", Email = "*****@*****.**", Url = new Uri("http://codemobiles.com"), }, License = new OpenApiLicense { Name = "Use under MIT", Url = new Uri("http://codemobiles.com"), }, }); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); c.AddSecurityRequirement(securityRequirement); // Set the comments path for the Swagger JSON and UI. var xmlFile = $"{Assembly.GetEntryAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); // Uses full schema names to avoid v1/v2/v3 schema collisions // see: https://github.com/domaindrivendev/Swashbuckle/issues/442 c.CustomSchemaIds(x => x.FullName); }); }
/// <summary> /// Fetches the value of "security" tags from xml documentation and populates operation's security requirement /// values. /// </summary> /// <param name="operation">The operation to be updated.</param> /// <param name="element">The xml element representing an operation in the annotation xml.</param> /// <param name="settings">The operation filter settings.</param> /// <returns>The list of generation errors, if any produced when processing the filter.</returns> public IList <GenerationError> Apply( OpenApiOperation operation, XElement element, OperationFilterSettings settings) { var generationErrors = new List <GenerationError>(); try { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (element == null) { throw new ArgumentNullException(nameof(element)); } if (operation == null) { throw new ArgumentNullException(nameof(operation)); } var securityElements = element.Elements() .Where( p => p.Name == KnownXmlStrings.Security); if (!securityElements.Any()) { return(generationErrors); } var openApiSecurityRequirement = new OpenApiSecurityRequirement(); var securitySchemeRegistry = settings.ReferenceRegistryManager.SecuritySchemeReferenceRegistry; foreach (var securityElement in securityElements) { var securityScheme = securitySchemeRegistry.FindOrAddReference(securityElement); openApiSecurityRequirement.Add(securityScheme, securitySchemeRegistry.Scopes); } operation.Security.Add(openApiSecurityRequirement); } catch (Exception ex) { generationErrors.Add( new GenerationError { Message = ex.Message, ExceptionType = ex.GetType().Name }); } return(generationErrors); }
public static void AddSwagger(this IServiceCollection services) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "API Shell API", Description = "Shell ASP.NET Core Web API", TermsOfService = new System.Uri("https://www.Pevaar.com"), Contact = new OpenApiContact() { Name = "Pevaar Softwre Factory", Email = "*****@*****.**" } }); //c.SwaggerDoc("v2", new OpenApiInfo //{ // Version = "v2", // Title = "New API V2", // Description = "Sample Web API", // TermsOfService = new System.Uri("https://www.talkingdotnet.com"), // Contact = new OpenApiContact() { Name = "Talking Dotnet", Email = "*****@*****.**" } //}); // Set the comments path for the Swagger JSON and UI. var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); //Add Bearer var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; c.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); c.AddSecurityRequirement(securityRequirement); //Fin Add Bearer //c.DescribeAllEnumsAsStrings(); //c.DescribeStringEnumsInCamelCase(); }); }
public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.RequireHttpsMetadata = false; options.TokenValidationParameters = new TokenValidationParameters { ValidateAudience = false, ValidateIssuer = false, ValidateLifetime = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(Configuration.GetValue <string>("SecretKey"))), ValidateIssuerSigningKey = true, ClockSkew = TimeSpan.Zero }; }); var conString = Configuration.GetValue <string>("StorageConnectionString"); services.AddSingleton <ITableStorageContext>(new TableStorageContext(conString)); services.AddScoped <ITaskService, TaskStorageService>(); services.AddScoped <IProjectService, ProjectStorageService>(); services.AddControllers(); services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "Task Manager Api", Description = "Description" }); var securitySchema = new OpenApiSecurityScheme { Description = "JWT Authorization header using the Bearer scheme.Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; options.AddSecurityDefinition("Bearer", securitySchema); var securityRequirement = new OpenApiSecurityRequirement(); securityRequirement.Add(securitySchema, new[] { "Bearer" }); options.AddSecurityRequirement(securityRequirement); }); services.AddAutoMapper(typeof(Startup)); }
public static OpenApiSecurityRequirement GetCopy(Dictionary <OpenApiSecurityScheme, IList <string> > right) { var newSecurityRequirement = new OpenApiSecurityRequirement(); foreach (var(key, value) in right) { newSecurityRequirement.Add(key, value); } return(newSecurityRequirement); }