public string Protect(AuthenticationTicket data) { if (data == null) { throw new ArgumentNullException("data"); } string audienceId = data.Properties.Dictionary.ContainsKey(AudiencePropertyKey) ? data.Properties.Dictionary[AudiencePropertyKey] : null; if (string.IsNullOrWhiteSpace(audienceId)) { throw new InvalidOperationException("AuthenticationTicket.Properties does not include audience"); } Audience audience = AudienceRepository.FindAudience(audienceId); string symmetricKeyAsBase64 = audience.Base64Secret; var keyByteArray = TextEncodings.Base64Url.Decode(symmetricKeyAsBase64); var signingKey = new HmacSigningCredentials(keyByteArray); var issued = data.Properties.IssuedUtc; var expires = data.Properties.ExpiresUtc; var token = new JwtSecurityToken(_issuer, audienceId, data.Identity.Claims, issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingKey); var handler = new JwtSecurityTokenHandler(); var jwt = handler.WriteToken(token); return(jwt); }
public ApplicationRepository() { _ctx = new AuthContext(); _userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(_ctx)); RefreshTokens = new RefreshTokenRepository(_ctx); Audiences = new AudienceRepository(_ctx); Files = new FileRepository(_ctx); }
public UnitOfWork(string connection, IContextService env) { switch (env.InstanceType) { case InstanceContext.DeployedOrLocal: case InstanceContext.End2EndTest: { _context = new IdentityEntitiesFactory(connection).Create(); #if !RELEASE _context.Database.Log = x => Debug.WriteLine(x); #endif } break; case InstanceContext.SystemTest: case InstanceContext.IntegrationTest: { var memory = Effort.EntityConnectionFactory.CreateTransient(connection); _context = new IdentityEntitiesFactory(memory).Create(); #if !RELEASE _context.Database.Log = x => Debug.WriteLine(x); #endif } break; case InstanceContext.UnitTest: { throw new NotImplementedException(); } break; default: throw new NotImplementedException(); } _context.Configuration.LazyLoadingEnabled = false; _context.Configuration.ProxyCreationEnabled = true; InstanceType = env.InstanceType; Audiences = new AudienceRepository(_context, env); AuthActivity = new AuthActivityRepository(_context); Claims = new GenericRepository <tbl_Claim>(_context); EmailQueue = new GenericRepository <tbl_EmailQueue>(_context); Issuers = new GenericRepository <tbl_Issuer>(_context); Logins = new GenericRepository <tbl_Login>(_context); MOTDs = new GenericRepository <tbl_MOTD>(_context); Refreshes = new RefreshRepository(_context); Roles = new GenericRepository <tbl_Role>(_context); Settings = new GenericRepository <tbl_Setting>(_context); States = new GenericRepository <tbl_State>(_context); TextQueue = new GenericRepository <tbl_TextQueue>(_context); Urls = new GenericRepository <tbl_Url>(_context); Users = new UserRepository(_context, env); }
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId = string.Empty; string clientSecret = string.Empty; string symmetricKeyAsBase64 = string.Empty; //TODO: implement this if (!context.TryGetBasicCredentials(out clientId, out clientSecret)) { context.TryGetFormCredentials(out clientId, out clientSecret); } if (context.ClientId == null) { context.SetError("invalid_clientId", "client_Id is not set"); return(Task.FromResult <object>(null)); } var audience = AudienceRepository.FindAudience(context.ClientId); if (audience == null) { context.SetError("invalid_clientId", string.Format("Invalid client_id '{0}'", context.ClientId)); return(Task.FromResult <object>(null)); } if (audience.ApplicationType == ApplicationTypes.NativeConfidential) { if (string.IsNullOrWhiteSpace(clientSecret)) { context.SetError("invalid_clientId", "Client/Audeince secret should be sent."); return(Task.FromResult <object>(null)); } else { if (audience.Base64Secret != Helper.GetHash(clientSecret)) { context.SetError("invalid_clientId", "Client/Audeience secret is invalid."); return(Task.FromResult <object>(null)); } } } if (!audience.Active) { context.SetError("invalid_clientId", "Client is inactive."); return(Task.FromResult <object>(null)); } context.OwinContext.Set <string>("as:clientAllowedOrigin", audience.AllowedOrigin); context.OwinContext.Set <string>("as:clientRefreshTokenLifeTime", audience.RefreshTokenLifeTime.ToString()); context.Validated(); return(Task.FromResult <object>(null)); }
public IHttpActionResult Post(AudienceModel audienceModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Audience newAudience = AudienceRepository.AddAudience(audienceModel.Name); return(Ok <Audience>(newAudience)); }
public UnitOfWork(string connection, IContextService env) { _logger = LoggerFactory.Create(opt => { opt.AddFilter("Microsoft", LogLevel.Warning) .AddFilter("Microsoft.EntityFrameworkCore", LogLevel.Warning) .AddFilter("System", LogLevel.Warning) .AddConsole(); }); switch (env.InstanceType) { case InstanceContext.DeployedOrLocal: case InstanceContext.End2EndTest: case InstanceContext.SystemTest: case InstanceContext.IntegrationTest: { #if !RELEASE var builder = new DbContextOptionsBuilder <IdentityEntities>() .UseSqlServer(connection) .UseLoggerFactory(_logger) .EnableSensitiveDataLogging(); #else var builder = new DbContextOptionsBuilder <IdentityEntities>() .UseSqlServer(connection); #endif _context = new IdentityEntities(builder.Options); } break; case InstanceContext.UnitTest: { //_context = Create.MockedDbContextFor<IdentityEntities>(); } break; default: throw new NotImplementedException(); } _context.ChangeTracker.LazyLoadingEnabled = false; _context.ChangeTracker.CascadeDeleteTiming = CascadeTiming.Immediate; InstanceType = env.InstanceType; Audiences = new AudienceRepository(_context, env); AuthActivity = new AuthActivityRepository(_context); Claims = new ClaimRepository(_context); EmailActivity = new EmailActivityRepository(_context); EmailQueue = new EmailQueueRepository(_context); Issuers = new IssuerRepository(_context); Logins = new LoginRepository(_context); MOTDs = new MOTDRepository(_context); Refreshes = new RefreshRepository(_context); Roles = new RoleRepository(_context); Settings = new SettingRepository(_context); States = new StateRepository(_context); TextActivity = new TextActivityRepository(_context); TextQueue = new TextQueueRepository(_context); Urls = new UrlRepository(_context); Users = new UserRepository(_context, env); }
public AudienceService(GhDbContext dbcontext) { _repository = new AudienceRepository(dbcontext); }
public static Audience FindAudience(string clientId) { AudienceRepository repo = new AudienceRepository(); return(repo.ReturnAudienceById(clientId)); }
public CustomJwtFormat(string issuer) { _issuer = issuer; _repository = new AudienceRepository(); }