public static IServiceCollection AddBewitFilter( this IServiceCollection services, BewitOptions options, Action <BewitPayloadContext> payloadBuilder) { return(services.AddBewitFilter(options, rb => { }, payloadBuilder)); }
public static IServiceCollection AddBewitFilter( this IServiceCollection services, IConfiguration configuration) { BewitOptions options = configuration.GetSection("Bewit").Get <BewitOptions>(); return(services.AddBewitFilter(options, rb => { }, pb => { })); }
public static IRequestExecutorBuilder UseBewitAuthorization( this IRequestExecutorBuilder builder, IConfiguration configuration) { BewitOptions options = configuration.GetSection("Bewit").Get <BewitOptions>(); return(builder.UseBewitAuthorization(options, build => { })); }
public static IServiceCollection AddBewitEndpointAuthorization( this IServiceCollection services, IConfiguration configuration) { BewitOptions options = configuration.GetSection("Bewit").Get <BewitOptions>(); return(services.AddBewitEndpointAuthorization(options)); }
public static IServiceCollection AddBewitFilter( this IServiceCollection services, IConfiguration configuration, Action <BewitPayloadContext> payloadBuilder) { BewitOptions options = configuration.GetSection("Bewit").Get <BewitOptions>(); return(services.AddBewitFilter(options, rb => { }, payloadBuilder)); }
public static IServiceCollection AddBewitValidation( this IServiceCollection services, IConfiguration configuration, Action <BewitRegistrationBuilder> build) { BewitOptions options = configuration.GetSection("Bewit").Get <BewitOptions>(); return(services.AddBewitValidation(options, build)); }
public static IServiceCollection AddBewitValidation <TPayload>( this IServiceCollection services, BewitOptions options) { return(services.AddBewitValidation(options, builder => { builder.AddPayload <TPayload>(); })); }
public static IServiceCollection AddBewitGeneration <TPayload>( this IServiceCollection services, BewitOptions options) { return(services.AddBewitGeneration(options, registrationBuilder => { registrationBuilder.AddPayload <TPayload>(); })); }
public static IServiceCollection AddBewitUrlAuthorizationFilter( this IServiceCollection services, IConfiguration configuration, Action <BewitRegistrationBuilder> registrationBuilder, Action <BewitPayloadContext> payloadBuilder) { BewitOptions options = configuration.GetSection("Bewit").Get <BewitOptions>(); return(services.AddBewitUrlAuthorizationFilter(options, registrationBuilder, payloadBuilder)); }
public static IRequestExecutorBuilder UseBewitAuthorization( this IRequestExecutorBuilder builder, BewitOptions options, Action <BewitRegistrationBuilder> build) { builder .UseRequest <BewitTokenHeaderRequestMiddleware>() .Services .AddBewitValidation(options, build); return(builder); }
public static IServiceCollection AddBewitGeneration <TPayload>( this IServiceCollection services, IConfiguration configuration, Action <BewitRegistrationBuilder> build) { BewitOptions options = configuration.GetSection("Bewit").Get <BewitOptions>(); return(services.AddBewitGeneration(options, registrationBuilder => { registrationBuilder.AddPayload <TPayload>(); build(registrationBuilder); })); }
public static IServiceCollection AddBewitUrlAuthorizationFilter( this IServiceCollection services, BewitOptions options, Action <BewitRegistrationBuilder> registrationBuilder, Action <BewitPayloadContext> payloadBuilder) { services.AddBewitValidation(options, b => { payloadBuilder(b.AddPayload <string>()); registrationBuilder(b); }); services.AddTransient <BewitUrlAuthorizationAttribute>(); return(services); }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services // Add some sample data .AddSingleton(new DocumentsRepository( new List <Document> { new Document( "hello_world.pdf", "application/pdf") })); var bewitOptions = new BewitOptions { TokenDuration = TimeSpan.FromMinutes(5), Secret = "ax54Z$tgs87454" }; // Add support for generating bewits in the GraphQL Api services.AddBewitGeneration( bewitOptions, builder => { builder.AddPayload <FooPayload>(); builder.AddPayload <BarPayload>().UseMongoPersistence(new MongoNonceOptions { ConnectionString = "mongodb://localhost:27017" }); }); services.AddHttpContextAccessor(); // Add GraphQL Services services .AddGraphQLServer() .AddQueryType <QueryType>() .AddMutationType <MutationType>() .AddType <DocumentType>() .UseBewitAuthorization(bewitOptions, builder => { builder.AddPayload <FooPayload>(); builder.AddPayload <BarPayload>().UseMongoPersistence(new MongoNonceOptions { ConnectionString = "mongodb://localhost:27017" }); }); services.AddRouting(); }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { var bewitOptions = new BewitOptions { TokenDuration = TimeSpan.FromMinutes(5), Secret = "ax54Z$tgs87454" }; // Add support for generating bewits services.AddBewitGeneration <string>(bewitOptions); // Add support for endpoint authorization services.AddBewitEndpointAuthorization(bewitOptions); services.AddRouting(); }
public void Constructor_WithTokenDurationInitialization_ShouldConstruct() { //Arrange const string secret = "123"; //Act var options = new BewitOptions { Secret = secret, TokenDuration = TimeSpan.FromMinutes(2) }; //Assert options.Should().NotBeNull(); options.Secret.Should().Be(secret); options.TokenDuration.Should().Be(TimeSpan.FromMinutes(2)); }
public void Constructor_OnlyMandatoryParameters_ShouldConstruct() { //Arrange const string secret = "123"; //Act var options = new BewitOptions { Secret = secret }; //Assert options.Should().NotBeNull(); options.Secret.Should().Be(secret); options.TokenDuration.Should().Be(TimeSpan.FromMinutes(1)); }
public static async Task <string> CreateBadToken() { var bewitOptions = new BewitOptions { Secret = "badSecret", TokenDuration = TimeSpan.FromMinutes(5) }; ServiceProvider serviceProvider = new ServiceCollection() .AddBewitGeneration(bewitOptions, b => b.AddPayload <string>()) .BuildServiceProvider(); IBewitTokenGenerator <string> bewitGenerator = serviceProvider .GetService <IBewitTokenGenerator <string> >(); return((await bewitGenerator .GenerateBewitTokenAsync("badPayload", default)) .ToString()); }
public void FromConfiguration_WithAllKeys_ShouldBindAllKeys() { //Arrange IConfiguration config = new ConfigurationBuilder() .AddInMemoryCollection(new[] { new KeyValuePair <string, string>("Secret", "123"), new KeyValuePair <string, string>("TokenDuration", "2.03:00:00") }).Build(); //Act BewitOptions options = config.Get <BewitOptions>(); //Assert options.Should().NotBeNull(); options.Secret.Should().Be("123"); options.TokenDuration.Should().Be(TimeSpan.FromDays(2) + TimeSpan.FromHours(3)); }
public static IServiceCollection AddBewitGeneration( this IServiceCollection services, BewitOptions options, Action <BewitRegistrationBuilder> build) { options.Validate(); var builder = new BewitRegistrationBuilder(); build(builder); services.TryAddSingleton(options); services.TryAddSingleton <ICryptographyService, HmacSha256CryptographyService>(); services.TryAddSingleton <IVariablesProvider, VariablesProvider>(); services.TryAddSingleton <INonceRepository, DefaultNonceRepository>(); foreach (BewitPayloadContext context in builder.Payloads) { if (context.CreateRepository == default) { context.SetRepository(() => new DefaultNonceRepository()); } if (context.CreateCryptographyService == default) { context.SetCryptographyService(() => new HmacSha256CryptographyService(options)); } if (context.CreateVariablesProvider == default) { context.SetVariablesProvider(() => new VariablesProvider()); } Type implementation = typeof(BewitTokenGenerator <>); Type typedImplementation = implementation.MakeGenericType(context.Type); Type service = typeof(IBewitTokenGenerator <>); Type typedService = service.MakeGenericType(context.Type); services.AddSingleton(typedService, sp => ActivatorUtilities .CreateInstance(sp, typedImplementation, context)); } return(services); }
internal static TestServer CreateServer <T>(BewitOptions options) { NonceRepository = new DefaultNonceRepository(); VariablesProvider = new MockedVariablesProvider(); IWebHostBuilder hostBuilder = new WebHostBuilder() .ConfigureServices(services => { services.AddMvc(); services .AddTransient <BewitAttribute>() .AddSingleton(options) .AddBewitValidation(options, b => b.AddPayload <T>() .SetVariablesProvider(() => VariablesProvider)); }) .Configure(app => app.UseRouting().UseEndpoints(c => c.MapControllers())); var server = new TestServer(hostBuilder); return(server); }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services // Add some sample data .AddSingleton(new DocumentsRepository( new List <Document> { new Document( "hello_world.pdf", ReadEmbeddedResource("Host.Files.hello_world.pdf"), "application/pdf") })); var bewitOptions = new BewitOptions { TokenDuration = TimeSpan.FromMinutes(5), Secret = "ax54Z$tgs87454" }; // Add support for generating bewits in the GraphQL Api services.AddBewitGeneration( bewitOptions, builder => builder.AddPayload <string>()); // Add support for validating bewits in the Mvc Api services.AddBewitUrlAuthorizationFilter( bewitOptions, builder => { }); // Add GraphQL Services services .AddGraphQLServer() .AddQueryType <Query>() .AddMutationType <MutationType>() .AddType <DocumentType>(); //Add MVC Services services.AddControllers(); services.AddRouting(); }
public BewitTokenGenerator( BewitOptions options, BewitPayloadContext context) { if (options == null) { throw new ArgumentNullException(nameof(options)); } if (context == null) { throw new ArgumentNullException(nameof(context)); } _tokenDuration = options.TokenDuration; _cryptographyService = context.CreateCryptographyService?.Invoke() ?? throw new ArgumentNullException(nameof(BewitPayloadContext.CreateCryptographyService)); _variablesProvider = context.CreateVariablesProvider?.Invoke() ?? throw new ArgumentNullException(nameof(BewitPayloadContext.CreateVariablesProvider)); _repository = context.CreateRepository?.Invoke() ?? throw new ArgumentNullException(nameof(BewitPayloadContext.CreateRepository)); }
public static IServiceCollection AddBewitValidation( this IServiceCollection services, BewitOptions options) { return(services.AddBewitValidation(options, build => { })); }
public static IServiceCollection AddBewitEndpointAuthorization( this IServiceCollection services, BewitOptions options) { return(services.AddBewitValidation <string>(options)); }
public static IRequestExecutorBuilder UseBewitAuthorization( this IRequestExecutorBuilder builder, BewitOptions options) { return(builder.UseBewitAuthorization(options, build => { })); }