/// <summary> /// Gets the pre request hook for loading the authenticated user's details /// from the auth header. /// </summary> /// <param name="configuration">Token authentication configuration to use</param> /// <returns>Pre request hook delegate</returns> private static Func<NancyContext, Response> GetCredentialRetrievalHook(TokenAuthenticationConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } return context => { RetrieveCredentials(context, configuration); return null; }; }
/// <summary> /// Gets the pre request hook for loading the authenticated user's details /// from the auth header. /// </summary> /// <param name="configuration">Token authentication configuration to use</param> /// <returns>Pre request hook delegate</returns> private static Func <NancyContext, Response> GetCredentialRetrievalHook(TokenAuthenticationConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } return(context => { RetrieveCredentials(context, configuration); return null; }); }
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines) { var tokenizer = container.Resolve<ITokenizer>(); var cfg = new TokenAuthenticationConfiguration(tokenizer); TokenAuthentication.Enable(pipelines, cfg); pipelines.OnError.AddItemToStartOfPipeline((context, exception) => { _logger.Error(exception, "Error in HTTP pipeline."); return null; }); }
private static void RetrieveCredentials(NancyContext context, TokenAuthenticationConfiguration configuration) { var token = ExtractTokenFromHeader(context.Request); if (token != null) { var user = configuration.Tokenizer.Detokenize(token, context); if (user != null) { context.CurrentUser = user; } } }
/// <summary> /// Enables Token authentication for the application /// </summary> /// <param name="pipelines">Pipelines to add handlers to (usually "this")</param> /// <param name="configuration">Forms authentication configuration</param> public static void Enable(IPipelines pipelines, TokenAuthenticationConfiguration configuration) { if (pipelines == null) { throw new ArgumentNullException("pipelines"); } if (configuration == null) { throw new ArgumentNullException("configuration"); } pipelines.BeforeRequest.AddItemToStartOfPipeline(GetCredentialRetrievalHook(configuration)); }
/// <summary> /// Enables Token authentication for a module /// </summary> /// <param name="module">Module to add handlers to (usually "this")</param> /// <param name="configuration">Forms authentication configuration</param> public static void Enable(INancyModule module, TokenAuthenticationConfiguration configuration) { if (module == null) { throw new ArgumentNullException("module"); } if (configuration == null) { throw new ArgumentNullException("configuration"); } module.RequiresAuthentication(); module.Before.AddItemToStartOfPipeline(GetCredentialRetrievalHook(configuration)); }