private void AddAuthentication(IServiceCollection services, AuthenticationOptions authenticationOptions) { services.Configure <AuthenticationOptions>(options => options = authenticationOptions); services.AddAuthentication(sharedOptions => { sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.Audience = authenticationOptions.ClientId; options.Authority = authenticationOptions.Authority; }); services.AddSingleton <IClaimsTransformation, ScopeClaimSplitTransformation>(); }
private void AddSwagger(IServiceCollection services, AuthenticationOptions authenticationOptions) { // Register the Swagger generator, defining 1 or more Swagger documents services.AddSwaggerGen(c => { var infoV1 = CreateOpenApiInfo( "v1", "Resource Utilization API Version 1", "Detailed layout of Resource Utilization API with ASP.NET Core Web API" ); var infoV2 = CreateOpenApiInfo( "v2", "Resource Utilization API Version 2", "Detailed layout of Resource Utilization API with ASP.NET Core Web API" ); c.SwaggerDoc("v1", infoV1); c.SwaggerDoc("v2", infoV2); AddSwaggerJsonAndUi(c); AddSwaggerSecurityDefinition(c, authenticationOptions); AddSwaggerSecurityRequirement(c); }); }
private void AddSwaggerSecurityDefinition(Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenOptions c, AuthenticationOptions authenticationOptions) { c.AddSecurityDefinition("aad-jwt", new OpenApiSecurityScheme { Type = SecuritySchemeType.OAuth2, Flows = new OpenApiOAuthFlows { Implicit = new OpenApiOAuthFlow { AuthorizationUrl = new Uri(authenticationOptions.AuthorizationUrl), Scopes = DelegatedPermissions.All.ToDictionary(p => $"{authenticationOptions.ApplicationIdUri}/{p}") } } }); }