public static IdentityServerServiceFactory Configure(this IdentityServerServiceFactory factory, string connectionString) { var efConfig = new EntityFrameworkServiceOptions { ConnectionString = connectionString, //SynchronousReads = true }; // these two calls just pre-populate the test DB from the in-memory config ConfigureClients(Clients.Get(), efConfig); ConfigureScopes(Scopes.Get(), efConfig); ConfigureUsers(Users.Get(), efConfig); var serviceOptions = new EntityFrameworkServiceOptions { ConnectionString = connectionString }; factory.RegisterOperationalServices(serviceOptions); factory.RegisterConfigurationServices(serviceOptions); factory.Register(new Registration <Entities.Context>(resolver => new Entities.Context(connectionString))); factory.Register(new Registration <Entities.UserStore>()); factory.Register(new Registration <Entities.UserManager>()); var userService = new EulaAtLoginUserService(); factory.UserService = new Registration <IUserService>(resolver => userService); factory.ViewService = new Registration <IViewService, CustomViewService>(); return(factory); }
public IdentityServerOptions GetOptions() { var factory = new IdentityServerServiceFactory() .UseInMemoryClients(Clients.Get()) .UseInMemoryScopes(Scopes.Get()); var userService = new EulaAtLoginUserService(); // note: for the sample this registration is a singletone (not what you want in production probably) factory.UserService = new Registration <IUserService>(resolver => userService); var options = new IdentityServerOptions { SiteName = "IdentityServer3 - CustomUserService", SigningCertificate = Certificate.Get(), Factory = factory, AuthenticationOptions = new AuthenticationOptions { LoginPageLinks = new LoginPageLink[] { new LoginPageLink { Text = "Register", Href = "localregistration" } } }, EventsOptions = new EventsOptions { RaiseSuccessEvents = true, RaiseErrorEvents = true, RaiseFailureEvents = true, RaiseInformationEvents = true } }; return(options); }
public void Configuration(IAppBuilder app) { app.Map("/oauth", coreApp => { var factory = new IdentityServerServiceFactory(); factory.ClaimsProvider = new Registration <IClaimsProvider, CustomClaimProvider>(); var clientStorageProvider = new ClientStorage(); factory.ClientStore = new Registration <IClientStore>(resolver => clientStorageProvider); var scopeStorageProvider = new ScopeProvider(); factory.ScopeStore = new Registration <IScopeStore>(resolver => scopeStorageProvider); //currently by defult supported for angular only factory.ViewService = new Registration <IViewService, CustomAngularViewService>(); // different examples of custom user services //var userService = new RegisterFirstExternalRegistrationUserService(); //var userService = new ExternalRegistrationUserService(); var userService = new EulaAtLoginUserService(); // var userService = new LocalRegistrationUserService(); //for normal // factory.UserService = new Registration<IUserService, EulaAtLoginUserService>(); factory.UserService = new Registration <IUserService>(resolver => userService); //for custom login service // factory.UserService = new Registration<IUserService, LocalRegistrationUserService>(); factory.Register(new Registration <TestController>(typeof(TestController))); var options = new IdentityServerOptions { EnableWelcomePage = false, //Endpoints = new EndpointOptions() //{ // EnableUserInfoEndpoint = true, // EnableTokenEndpoint = true, // EnableAuthorizeEndpoint = true, // EnableClientPermissionsEndpoint = true, // EnableTokenRevocationEndpoint = true, // EnableAccessTokenValidationEndpoint = true //}, SiteName = "Identity Server", SigningCertificate = Certificate.Get(), Factory = factory, ////this line for custom login //AuthenticationOptions = new AuthenticationOptions //{ //}, AuthenticationOptions = new AuthenticationOptions { RequireSignOutPrompt = false, // IdentityProviders = ConfigureAdditionalIdentityProviders, //LoginPageLinks = new LoginPageLink[] { // new LoginPageLink{ // Text = "Register", // //Href = "~/localregistration" // Href = "localregistration" // } //} }, EventsOptions = new EventsOptions { RaiseSuccessEvents = true, RaiseErrorEvents = true, RaiseFailureEvents = true, RaiseInformationEvents = true } }; coreApp.UseIdentityServer(options); }); //JwtSecurityTokenHandler.InboundClaimTypeMap.Clear(); //app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions //{ // Authority = "https://localhost:44300/core", // RequiredScopes = new[] { "openId","write","email","profile" }, // // client credentials for the introspection endpoint // ClientId = "write", // ClientSecret = "secret" //}); //app.UseWebApi(WebApiConfig.Register()); }
public void Configuration(IAppBuilder app) { Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.File(@"c:\logs\OIDC.IdentityServer.Web.txt") .CreateLogger(); var ef = new EntityFrameworkServiceOptions { ConnectionString = "IdSvr3Config", //配置的连接字符串,EF会自动生成数据库 }; var factory = new IdentityServerServiceFactory(); factory.RegisterConfigurationServices(ef); factory.RegisterOperationalServices(ef); factory.RegisterClientStore(ef); factory.RegisterScopeStore(ef); //var factory = new IdentityServerServiceFactory() // .UseInMemoryClients(Clients.Get()) // .UseInMemoryScopes(Scopes.Get()); //自定义用户认证 var userService = new EulaAtLoginUserService(); factory.UserService = new Registration <IUserService>(resolver => userService); //自定义登录视图 factory.ViewService = new Registration <IViewService, MvcViewService <LogonWorkflowController> >(); //自定义登录视图,还需要这些注册,因为这些都是使用非STA处理的。 factory.Register(new Registration <HttpContext>(resolver => HttpContext.Current)); factory.Register(new Registration <HttpContextBase>(resolver => new HttpContextWrapper(resolver.Resolve <HttpContext>()))); factory.Register(new Registration <HttpRequestBase>(resolver => resolver.Resolve <HttpContextBase>().Request)); factory.Register(new Registration <HttpResponseBase>(resolver => resolver.Resolve <HttpContextBase>().Response)); factory.Register(new Registration <HttpServerUtilityBase>(resolver => resolver.Resolve <HttpContextBase>().Server)); factory.Register(new Registration <HttpSessionStateBase>(resolver => resolver.Resolve <HttpContextBase>().Session)); var options = new IdentityServerOptions { SiteName = "认证中心", SigningCertificate = Certificate.Load(), Factory = factory, RequireSsl = false, AuthenticationOptions = new AuthenticationOptions { IdentityProviders = ConfigureAdditionalIdentityProviders, LoginPageLinks = new LoginPageLink[] { new LoginPageLink { Text = "Register", //Href = "~/localregistration" Href = "localregistration" } } }, EventsOptions = new EventsOptions { RaiseSuccessEvents = true, RaiseErrorEvents = true, RaiseFailureEvents = true, RaiseInformationEvents = true } }; //启动清除过期票据定时器 var cleanToken = new TokenCleanup(ef, 20); cleanToken.Start(); //自定义服务路径 http://localhost:44111/identity app.Map("/identity", idsrvApp => { idsrvApp.UseIdentityServer(options); }); Log.Logger.Information("程序启动成功"); }