Injeção de dependência de autofac na implementação do OAuthAuthorizationServerProvider

Estou criando um aplicativo de API da Web e quero usar tokens de portador para a autenticação do usuário. Eu implementei a lógica do token, seguindoesta postagem e tudo parece funcionar bem. NOTA: Não estou usando o provedor de identidade do ASP.NET. Em vez disso, criei uma entidade e serviços de usuário personalizados para ela.

 public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureOAuth(app);

        var config = new HttpConfiguration();
        var container = DependancyConfig.Register();
        var dependencyResolver = new AutofacWebApiDependencyResolver(container);
        config.DependencyResolver = dependencyResolver;

        app.UseAutofacMiddleware(container);
        app.UseAutofacWebApi(config);

        WebApiConfig.Register(config);
        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
        app.UseWebApi(config);
    }

    public void ConfigureOAuth(IAppBuilder app)
    {
        var oAuthServerOptions = new OAuthAuthorizationServerOptions
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new SimpleAuthorizationServerProvider()
        };

        // Token Generation
        app.UseOAuthAuthorizationServer(oAuthServerOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

    }
}

e esta é minha implementação da classe SimpleAuthorizationServerProvider

private IUserService _userService;
    public IUserService UserService
    {
        get { return (IUserService)(_userService ?? GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(IUserService))); }
        set { _userService = value; }
    }

    public async override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        context.Validated();
    }

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        var user = await UserService.GetUserByEmailAndPassword(context.UserName, context.Password);

        if (user == null)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim("sub", context.UserName));
        identity.AddClaim(new Claim("role", "user"));

        context.Validated(identity);

    }
}

Depois de ligar para o / token url, recebo o seguinte erro

Nenhum escopo com uma tag correspondente a 'AutofacWebRequest' é visível no escopo em que a instância foi solicitada. Isso geralmente indica que um componente registrado como solicitação por HTTP está sendo solicitado por um componente SingleInstance () (ou um cenário semelhante). Sob a integração da Web, sempre solicite dependências do DependencyResolver.Current ou ILifetimeScopeProvider.RequestLifetime, nunca do próprio contêiner.

Existe uma maneira de usar injeção de dependência dentro desta classe? Estou usando um padrão de repositório para acessar minhas entidades, portanto, não acho que seja uma boa ideia criar uma nova instância do contexto do objeto. Qual é a maneira correta de fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion