/// <summary>
        /// Register the scope store
        /// </summary>
        public static void RegisterScopeStore(this IdentityServerServiceFactory factory, DocumentDbServiceOptions options)
        {
            if (factory == null) throw new ArgumentNullException(nameof(factory));
            if (options == null) throw new ArgumentNullException(nameof(options));

            factory.RegisterCommonServices(options);

            factory.ScopeStore = new Registration<IScopeStore, ScopeStore>();
        }
        /// <summary>
        /// Register the operational services, namely the token and consent stores
        /// </summary>
        public static void RegisterOperationalServices(this IdentityServerServiceFactory factory, DocumentDbServiceOptions options)
        {
            if (factory == null) throw new ArgumentNullException(nameof(factory));
            if (options == null) throw new ArgumentNullException(nameof(options));

            factory.RegisterCommonServices(options);

            factory.AuthorizationCodeStore = new Registration<IAuthorizationCodeStore, AuthorizationCodeStore>();
            factory.TokenHandleStore = new Registration<ITokenHandleStore, TokenHandleStore>();
            factory.ConsentStore = new Registration<IConsentStore, ConsentStore>();
            factory.RefreshTokenStore = new Registration<IRefreshTokenStore, RefreshTokenStore>();
        }
 public static void ConfigureScopes(IEnumerable<Scope> scopes, DocumentDbServiceOptions options)
 {
     ScopeRepository scopeRepository = new ScopeRepository(options.ToConnectionSettings());
     var allScopes = scopeRepository.GetAllScopes().Result;
     if (!allScopes.Any())
     {
         foreach (var s in scopes)
         {
             scopeRepository.AddScope(s.ToDocument()).Wait();
         }
     }
 }
 public static void ConfigureClients(IEnumerable<Client> clients, DocumentDbServiceOptions options)
 {
     ClientRepository clientRepository = new ClientRepository(options.ToConnectionSettings());
     var allClients = clientRepository.GetAllClients().Result;
     if (!allClients.Any())
     {
         foreach (var c in clients)
         {
             clientRepository.AddClient(c.ToDocument()).Wait();
         }
     }
 }
Example #5
0
        public TokenCleanup(DocumentDbServiceOptions options, int interval = 60)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            if (interval < 1)
            {
                throw new ArgumentException("interval must be more than 1 second");
            }

            var connectionSettings = options.ToConnectionSettings();

            this._interval = TimeSpan.FromSeconds(interval);

            _refreshTokenRepository      = new RefreshTokenRepository(options.CollectionNameResolver, connectionSettings);
            _authorizationCodeRepository = new AuthorizationCodeRepository(options.CollectionNameResolver, connectionSettings);
            _tokenHandleRepository       = new TokenHandleRepository(options.CollectionNameResolver, connectionSettings);
        }
        private static void RegisterCommonServices(this IdentityServerServiceFactory factory, DocumentDbServiceOptions options)
        {
            if (factory.Registrations.All(x => x.DependencyType != typeof (IPropertySerializer)))
            {
                var connectionSettings = options.ToConnectionSettings();
                factory.Register(new Registration<ConnectionSettings>(connectionSettings));
                factory.Register(new Registration<IPropertySerializer, JsonPropertySerializer>()
                {
                    Mode = RegistrationMode.Singleton,
                });

                // repository singletons
                factory.Register(new Registration<IConsentRepository>(new ConsentRepository(connectionSettings)));
                factory.Register(new Registration<IAuthorizationCodeRepository>(new AuthorizationCodeRepository(connectionSettings)));
                factory.Register(new Registration<IRefreshTokenRepository>(new RefreshTokenRepository(connectionSettings)));
                factory.Register(new Registration<ITokenHandleRepository>(new TokenHandleRepository(connectionSettings)));
                factory.Register(new Registration<IClientRepository>(new ClientRepository(connectionSettings)));
                factory.Register(new Registration<IScopeRepository>(new ScopeRepository(connectionSettings)));
            }
        }
        public static IdentityServerServiceFactory Configure(DocumentDbServiceOptions documentDbServiceOptions)
        {
            var efConfig = documentDbServiceOptions;

            var cleanup = new TokenCleanup(efConfig, 10);
            cleanup.Start();

            // these two calls just pre-populate the test DB from the in-memory config
            ConfigureClients(Clients.Get(), efConfig);
            ConfigureScopes(Scopes.Get(), efConfig);

            var factory = new IdentityServerServiceFactory();

            factory.RegisterConfigurationServices(efConfig);
            factory.RegisterOperationalServices(efConfig);

            factory.UseInMemoryUsers(Users.Get());

            return factory;
        }
Example #8
0
        /// <summary>
        /// Register the scope store
        /// </summary>
        public static void RegisterScopeStore(this IdentityServerServiceFactory factory, DocumentDbServiceOptions options)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            factory.RegisterCommonServices(options);

            factory.ScopeStore = new Registration <IScopeStore, ScopeStore>();
        }
Example #9
0
 /// <summary>
 /// Register the configuration services, namely the client and scope stores
 /// </summary>
 public static void RegisterConfigurationServices(this IdentityServerServiceFactory factory, DocumentDbServiceOptions options)
 {
     factory.RegisterClientStore(options);
     factory.RegisterScopeStore(options);
 }
Example #10
0
        /// <summary>
        /// Register the operational services, namely the token and consent stores
        /// </summary>
        public static void RegisterOperationalServices(this IdentityServerServiceFactory factory, DocumentDbServiceOptions options)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            factory.RegisterCommonServices(options);

            factory.AuthorizationCodeStore = new Registration <IAuthorizationCodeStore, AuthorizationCodeStore>();
            factory.TokenHandleStore       = new Registration <ITokenHandleStore, TokenHandleStore>();
            factory.ConsentStore           = new Registration <IConsentStore, ConsentStore>();
            factory.RefreshTokenStore      = new Registration <IRefreshTokenStore, RefreshTokenStore>();
        }
Example #11
0
        private static void RegisterCommonServices(this IdentityServerServiceFactory factory, DocumentDbServiceOptions options)
        {
            if (factory.Registrations.All(x => x.DependencyType != typeof(IPropertySerializer)))
            {
                var connectionSettings = options.ToConnectionSettings();
                var nameresolver       = options.CollectionNameResolver;
                factory.Register(new Registration <ICollectionNameResolver>(options.CollectionNameResolver));
                factory.Register(new Registration <ConnectionSettings>(resolver => connectionSettings));
                factory.Register(new Registration <IPropertySerializer, JsonPropertySerializer>());

                //singletons to avoid excessing docdb client creations
                factory.Register(new Registration <IConsentRepository>(new ConsentRepository(nameresolver, connectionSettings)));
                factory.Register(new Registration <IAuthorizationCodeRepository>(new AuthorizationCodeRepository(nameresolver, connectionSettings)));
                factory.Register(new Registration <IRefreshTokenRepository>(new RefreshTokenRepository(nameresolver, connectionSettings)));
                factory.Register(new Registration <ITokenHandleRepository>(new TokenHandleRepository(nameresolver, connectionSettings)));
                factory.Register(new Registration <IClientRepository>(new ClientRepository(nameresolver, connectionSettings)));
                factory.Register(new Registration <IScopeRepository>(new ScopeRepository(nameresolver, connectionSettings)));
            }
        }
 /// <summary>
 /// Register the configuration services, namely the client and scope stores
 /// </summary>
 public static void RegisterConfigurationServices(this IdentityServerServiceFactory factory, DocumentDbServiceOptions options)
 {
     factory.RegisterClientStore(options);
     factory.RegisterScopeStore(options);
 }