none
Como utilizar la informacion contenida en JWT en Asp.Net Core ? RRS feed

  • Pregunta

  • Hola...

    Desarrollo una App donde uso JWT para otorgar permisos a recursos desde la aplicacion...ya pude generar el token  y devolverlo a mis clientes ....

    Ahora como puedo hacer para que cuando los clientes envien en este token al servidor validarlo usando la informacion contenida en este ??


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    miércoles, 3 de julio de 2019 20:43

Respuestas

  • Hola, ya estas especificando la validación del token recibido en estas lineas

    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
               .AddJwtBearer(options =>
               {
                   options.TokenValidationParameters = new TokenValidationParameters
                   {
                       ValidateIssuer = true,
                       ValidateAudience = true,
                       ValidateLifetime = true,
                       ValidateIssuerSigningKey = true,
                       ValidIssuer = Configuration["Jwt:Issuer"],
                       ValidAudience = Configuration["Jwt:Audience"],
                       IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
                   };
               });
    El token recibido debe cumplir esas premisas para ser válido. Te recomiendo que si coges un token jwt y vas a la página https://jwt.io/ verás los datos contenidos en el mismo. En este caso validará el Issuer (iss) y el Audience (aud) así como la clave de firma del token. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 4 de julio de 2019 15:59
    Moderador

Todas las respuestas

  • hola

    deberia ser automatico si pasa la autenticacion, el token se desencripta y obtiene los datos de los claims en el

    var identity = (ClaimsIdentity) Principal.Identity;

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 3 de julio de 2019 21:06
  • Hola. Usas asp. Net core?. Net framework? Lo comento porque la validación de dicho token se establece en el Startup de la aplicación. Puedes ponernos el código de dicha clase? 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 3 de julio de 2019 21:13
    Moderador
  • Hola Sergio Parra ....

    En realidad  lo que nesecito es que cuando se realize una peticion a mi api obtener el toquen contenido en esta peticion y validarlo  Como podria hacer esto ??

    este es el codigo de StartUp.cs

        public class Startup
        {
            private IConfigurationBuilder builder;
            public IConfiguration Configuration { get; }

            public Startup(IConfiguration configuration, IHostingEnvironment env)
            {
                Configuration = configuration;
                this.builder = new ConfigurationBuilder()
                   .SetBasePath(env.ContentRootPath)
                   .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                   .AddEnvironmentVariables();
            }

            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                EngineData.DefaultConnection = Configuration["ConnectionStrings:ConexionDb"];
                EngineData.UrlBase = Configuration["Site:UrlBase"];
                EngineData.JwtKey = Configuration["Jwt:Key"];
                EngineData.JwtIssuer = Configuration["Jwt:Issuer"];
                EngineData.JwtAudience = Configuration["Jwt:Audience"];

                //EntityFramework
                services.Configure<CookiePolicyOptions>(options =>
                {
                    options.CheckConsentNeeded = context => true;
                    options.MinimumSameSitePolicy = SameSiteMode.None;
                });

                services.AddDbContext<ShineContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("ConexionDb")));
                
                //JasonWebToken JWt
                services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
               .AddJwtBearer(options =>
               {
                   options.TokenValidationParameters = new TokenValidationParameters
                   {
                       ValidateIssuer = true,
                       ValidateAudience = true,
                       ValidateLifetime = true,
                       ValidateIssuerSigningKey = true,
                       ValidIssuer = Configuration["Jwt:Issuer"],
                       ValidAudience = Configuration["Jwt:Audience"],
                       IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
                   };
               });
                services.AddMvc();
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            }

            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {
                    app.UseHsts();
                }

                app.UseHttpsRedirection();
                app.UseMvc();
            }
        }


    EFRAIN MEJIAS C VALENCIA - VENEZUELA


    jueves, 4 de julio de 2019 15:37
  • Hola, ya estas especificando la validación del token recibido en estas lineas

    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
               .AddJwtBearer(options =>
               {
                   options.TokenValidationParameters = new TokenValidationParameters
                   {
                       ValidateIssuer = true,
                       ValidateAudience = true,
                       ValidateLifetime = true,
                       ValidateIssuerSigningKey = true,
                       ValidIssuer = Configuration["Jwt:Issuer"],
                       ValidAudience = Configuration["Jwt:Audience"],
                       IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
                   };
               });
    El token recibido debe cumplir esas premisas para ser válido. Te recomiendo que si coges un token jwt y vas a la página https://jwt.io/ verás los datos contenidos en el mismo. En este caso validará el Issuer (iss) y el Audience (aud) así como la clave de firma del token. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 4 de julio de 2019 15:59
    Moderador
  • En definitiva, no tienes que realizar nada más. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 4 de julio de 2019 15:59
    Moderador