Decodifique manualmente o token do portador do OAuth em c #

No meu aplicativo baseado no Web Api 2.2 OWIN, tenho uma situação em que preciso decodificar manualmente o token do portador, mas não sei como fazer isso. Esta é a minha startup.cs

public class Startup
{
    public static OAuthAuthorizationServerOptions OAuthServerOptions { get; private set; }
    public static UnityContainer IoC;
    public void Configuration(IAppBuilder app)
    {
        //Set Auth configuration
        ConfigureOAuth(app);

        ....and other stuff
    }

    public void ConfigureOAuth(IAppBuilder app)
    {
        OAuthServerOptions = new OAuthAuthorizationServerOptions()
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new AuthProvider(IoC.Resolve<IUserService>(), IoC.Resolve<IAppSettings>())
        };

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

No meu controlador, estou enviando o token do portador como parâmetro

[RoutePrefix("api/EP")]
public class EPController : MasterController
{
    [HttpGet]
    [AllowAnonymous]
    [Route("DC")]
    public async Task<HttpResponseMessage> GetDC(string token)
    {
        //Get the claim identity from the token here
        //Startup.OAuthServerOptions...

        //..and other stuff
    }
}

Como decodificar manualmente e obter as declarações do token passadas como parâmetro?

NOTA: Eu sei que posso enviar o token no cabeçalho e usar [Authorize] e (ClaimsIdentity) User.Identity etc., mas a questão é como ler o token quando ele não é apresentado no cabeçalho.

questionAnswers(3)

yourAnswerToTheQuestion