Skip to content

hfrances/qckdev.AspNetCore.Identity

Repository files navigation

NuGet Version Quality Gate Code Coverage Azure Pipelines Status

qckdev.AspNetCore.Identity

using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using qckdev.AspNetCore.Identity;

public void ConfigureServices(IServiceCollection services)
{
	var jwtTokenConfiguration = JwtTokenConfiguration.Get(configuration, "Tokens");

	services
		.AddInfrastructure<TUser, DemoDbContext<TUser>>(options =>
			options.UseInMemoryDatabase("miauth")
		)
		.AddDataInitializer<DataInitialization>()
	;

	services
		.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
		.AddJwtBearer(jwtTokenConfiguration)
		.AddGoogle(options =>
		{
			options.ClientId = configuration["Authentication:Google:ClientId"];
			options.ClientSecret = configuration["Authentication:Google:ClientSecret"];
		})
		.AddGoogleAuthorizationFlow()
		.AddMicrosoftAccount("MSAL", Guid.Parse(configuration["Authentication:Microsoft:TenantId"]),
			options =>
			{
				options.ClientId = configuration["Authentication:Microsoft:ClientId"];
				options.ClientSecret = configuration["Authentication:Microsoft:ClientSecret"];
			}
		)
		.AddMicrosoftAuthorizationFlow()
	;

	services.AddControllers();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
	(...)

	app.UseJsonExceptionHandler();
	app.UseRouting();
	app.UseAuthentication();
	app.UseAuthorization();

	(...)

	app.UseDataInitializer();
}
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using qckdev.AspNetCore.Identity.Infrastructure.Data;

public class DemoDbContext<TUser> : ApplicationDbContext<TUser>
	where TUser : IdentityUser
{

    public DemoDbContext(DbContextOptions options) : base(options) { }

}
using MediatR;
using Microsoft.Extensions.Configuration;
using qckdev.AspNetCore.Identity.Commands;
using qckdev.AspNetCore.Identity.Infrastructure.Data;
using qckdev.AspNetCore.Identity.Services;

public class DataInitialization : IDataInitializer
{
	public DataInitialization(
			IMediator mediator,
			IServiceProvider services,
			IIdentityManager identityManager,
			IConfiguration configuration, 
			...)
	{
		(...)
	}

	public async Task InitializeAsync(CancellationToken cancellationToken)
	{
		(...)
	}
}
{
  (...)
  "Tokens": {
	"Key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
	"ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	"Issuer": "localhost.loc",
	"AccessExpireSeconds": "86400"
  },
  "Authentication": {
	"Google": {
	  "ClientId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
	  "ClientSecret": "xxxxxxxxxxxxxxxxxxxxxxxx"
	},
	"Microsoft": {
	  "ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	  "TenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	  "ClientSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
	}
  },

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages