Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 public AudienceService(GhDbContext dbcontext)
 {
     _repository = new AudienceRepository(dbcontext);
 }
Exemplo n.º 8
0
        public static Audience FindAudience(string clientId)
        {
            AudienceRepository repo = new AudienceRepository();

            return(repo.ReturnAudienceById(clientId));
        }
Exemplo n.º 9
0
 public CustomJwtFormat(string issuer)
 {
     _issuer     = issuer;
     _repository = new AudienceRepository();
 }