/// <summary> /// Extension method to configure IdentityServer in the hosting application. /// </summary> /// <param name="app">The application.</param> /// <param name="options">The <see cref="Thinktecture.IdentityServer.Core.Configuration.IdentityServerOptions"/>.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException"> /// app /// or /// options /// </exception> public static IAppBuilder UseIdentityServer(this IAppBuilder app, IdentityServerOptions options) { if (app == null) { throw new ArgumentNullException("app"); } if (options == null) { throw new ArgumentNullException("options"); } options.Validate(); // turn off weird claim mappings for JWTs JwtSecurityTokenHandler.InboundClaimTypeMap = ClaimMappings.None; JwtSecurityTokenHandler.OutboundClaimTypeMap = ClaimMappings.None; if (options.RequireSsl) { app.Use <RequireSslMiddleware>(); } app.ConfigureRequestId(); options.ProtocolLogoutUrls.Add(Constants.RoutePaths.Oidc.EndSessionCallback); app.ConfigureDataProtectionProvider(options); app.ConfigureIdentityServerBaseUrl(options.PublicOrigin); app.ConfigureIdentityServerIssuer(options); app.UseCors(options.CorsPolicy); app.ConfigureCookieAuthentication(options.AuthenticationOptions.CookieOptions, options.DataProtector); var container = AutofacConfig.Configure(options); app.Use <AutofacContainerMiddleware>(container); if (options.PluginConfiguration != null) { options.PluginConfiguration(app, options); } if (options.AuthenticationOptions.IdentityProviders != null) { options.AuthenticationOptions.IdentityProviders(app, Constants.ExternalAuthenticationType); } app.UseEmbeddedFileServer(); SignatureConversions.AddConversions(app); app.UseWebApi(WebApiConfig.Configure(options)); using (var child = container.CreateScopeWithEmptyOwinContext()) { var eventSvc = child.Resolve <IEventService>(); DoStartupDiagnostics(options, eventSvc); } return(app); }
public static IAppBuilder UseIdentityServer(this IAppBuilder app, IdentityServerOptions options) { if (app == null) { throw new ArgumentNullException("app"); } if (options == null) { throw new ArgumentNullException("options"); } options.Validate(); // turn off weird claim mappings for JWTs JwtSecurityTokenHandler.InboundClaimTypeMap = ClaimMappings.None; JwtSecurityTokenHandler.OutboundClaimTypeMap = ClaimMappings.None; if (options.RequireSsl) { app.Use <RequireSslMiddleware>(); } options.ProtocolLogoutUrls.Add(Constants.RoutePaths.Oidc.EndSessionCallback); app.ConfigureDataProtectionProvider(options); app.ConfigureIdentityServerBaseUrl(options.PublicHostName); app.ConfigureIdentityServerIssuer(options); app.UseCors(options.CorsPolicy); app.ConfigureCookieAuthentication(options.AuthenticationOptions.CookieOptions, options.DataProtector); if (options.PluginConfiguration != null) { options.PluginConfiguration(app, options); } if (options.AuthenticationOptions.IdentityProviders != null) { options.AuthenticationOptions.IdentityProviders(app, Constants.ExternalAuthenticationType); } app.UseEmbeddedFileServer(); app.Use <AutofacContainerMiddleware>(AutofacConfig.Configure(options)); SignatureConversions.AddConversions(app); app.UseWebApi(WebApiConfig.Configure(options)); return(app); }
/// <summary> /// Extension method to configure IdentityServer in the hosting application. /// </summary> /// <param name="app">The application.</param> /// <param name="options">The <see cref="IdentityServer3.Core.Configuration.IdentityServerOptions"/>.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException"> /// app /// or /// options /// </exception> public static IAppBuilder UseIdentityServer(this IAppBuilder app, IdentityServerOptions options) { if (app == null) { throw new ArgumentNullException("app"); } if (options == null) { throw new ArgumentNullException("options"); } options.Validate(); // turn off weird claim mappings for JWTs JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary <string, string>(); JwtSecurityTokenHandler.OutboundClaimTypeMap = new Dictionary <string, string>(); if (options.RequireSsl) { app.Use <RequireSslMiddleware>(); } if (options.LoggingOptions.EnableKatanaLogging) { app.SetLoggerFactory(new LibLogKatanaLoggerFactory()); } app.ConfigureRequestId(); options.ProtocolLogoutUrls.Add(Constants.RoutePaths.Oidc.EndSessionCallback); app.ConfigureDataProtectionProvider(options); app.ConfigureIdentityServerBaseUrl(options.PublicOrigin); app.ConfigureIdentityServerIssuer(options); var container = AutofacConfig.Configure(options); app.UseAutofacMiddleware(container); app.UseCors(); app.ConfigureCookieAuthentication(options.AuthenticationOptions.CookieOptions, options.DataProtector); if (options.PluginConfiguration != null) { options.PluginConfiguration(app, options); } if (options.AuthenticationOptions.IdentityProviders != null) { options.AuthenticationOptions.IdentityProviders(app, Constants.ExternalAuthenticationType); } app.UseEmbeddedFileServer(); SignatureConversions.AddConversions(app); var httpConfig = WebApiConfig.Configure(options, container); app.UseAutofacWebApi(httpConfig); app.UseWebApi(httpConfig); using (var child = container.CreateScopeWithEmptyOwinContext()) { var eventSvc = child.Resolve <IEventService>(); // TODO -- perhaps use AsyncHelper instead? DoStartupDiagnosticsAsync(options, eventSvc).Wait(); } return(app); }
/// <summary> /// Extension method to configure IdentityServer in the hosting application. /// </summary> /// <param name="app">The application.</param> /// <param name="options">The <see cref="IdentityServerOptions"/>.</param> /// <returns></returns> /// <exception cref="ArgumentNullException"> /// app /// or /// options /// </exception> public static IAppBuilder UseIdentityServer(this IAppBuilder app, IdentityServerOptions options) { if (app == null) { throw new ArgumentNullException("app"); } if (options == null) { throw new ArgumentNullException("options"); } options.Validate(); JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); JwtSecurityTokenHandler.DefaultOutboundClaimTypeMap.Clear(); if (options.RequireSsl) { app.Use <RequireSslMiddleware>(); } if (options.LoggingOptions.EnableKatanaLogging) { app.SetLoggerFactory(new LibLogKatanaLoggerFactory()); } app.UseEmbeddedFileServer(); app.ConfigureRequestId(); app.ConfigureDataProtectionProvider(options); app.ConfigureIdentityServerBaseUrl(options.PublicOrigin); app.ConfigureIdentityServerIssuer(options); app.ConfigureRequestBodyBuffer(); // this needs to be earlier than the autofac middleware so anything is disposed and re-initialized // if we send the request back into the pipeline to render the logged out page app.ConfigureRenderLoggedOutPage(); var container = AutofacConfig.Configure(options); app.UseAutofacMiddleware(container); app.UseCors(); app.ConfigureCookieAuthentication(options.AuthenticationOptions.CookieOptions, options.DataProtector); // this needs to be before external middleware app.ConfigureSignOutMessageCookie(); if (options.PluginConfiguration != null) { options.PluginConfiguration(app, options); } if (options.AuthenticationOptions.IdentityProviders != null) { options.AuthenticationOptions.IdentityProviders(app, Constants.ExternalAuthenticationType); } app.ConfigureHttpLogging(options.LoggingOptions); SignatureConversions.AddConversions(app); var httpConfig = WebApiConfig.Configure(options, container); app.UseAutofacWebApi(httpConfig); app.UseWebApi(httpConfig); using (var child = container.CreateScopeWithEmptyOwinContext()) { var eventSvc = child.Resolve <IEventService>(); // TODO -- perhaps use AsyncHelper instead? DoStartupDiagnosticsAsync(options, eventSvc).Wait(); } return(app); }