none
Authorisierung mit JWT liefert nur "not found" RRS feed

  • Frage

  • Hallo,

    ich möchte für meine SPA JWT Tokens verwenden. Das erstellen funktioniert bereits. Die Token werden auch wieder korrekt zurück eingelesen wenn ich es per Hand mache.

    Aber ich kann das Attribut Athorized nicht verwenden. Wenn ich das mache, bekomme ich immer nur ein 404 Not found zurück oder meine Homepage...

    Wo liegt mein Fehler?

    public void ConfigureServices(IServiceCollection services)
            {
                
                services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                        .AddJwtBearer(options =>
                        {
    
                            options.RequireHttpsMetadata = false;
                            options.SaveToken = true;
    
                            options.TokenValidationParameters = new TokenValidationParameters()
                            {
                                ValidIssuer = Configuration["JwtIssuerOptions:Issuer"],
                                ValidAudience = Configuration["JwtIssuerOptions:Issuer"],
                                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtIssuerOptions:Key"]))
                            };
    
                            
                        });
    
                services.AddAuthorization();
    
                // Connection to Local SQLServer
                services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Database")));
    
    
                services.AddTransient<DataSeeder>();
    
    
                services.AddSingleton<IJwtFactory, JwtFactory>();
    
                
    
                //Identity
                services.AddIdentity<AppUser, IdentityRole>
                    (o =>
                    {
                        // configure identity options
                        o.Password.RequireDigit = false;
                        o.Password.RequireLowercase = false;
                        o.Password.RequireUppercase = false;
                        o.Password.RequireNonAlphanumeric = false;
                        o.Password.RequiredLength = 6;
                    })
                    .AddEntityFrameworkStores<ApplicationDbContext>()
                    .AddDefaultTokenProviders();
    
                services.AddMvc().AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>());
    
                services.AddAutoMapper();
    
                //Add MailKit
                services.AddMailKit(optionBuilder =>
                {
                    optionBuilder.UseMailKit(new MailKitOptions()
                    {
                        //get options from sercets.json
                        Server = Configuration["MailKit:Server"],
                        Port = Convert.ToInt32(Configuration["MailKit:Port"]),
                        SenderName = Configuration["MailKit:SenderName"],
                        SenderEmail = Configuration["MailKit:SenderEmail"],
                        Account = Configuration["MailKit:Account"],
                        Password = Configuration["MailKit:Password"],
                        // enable ssl or tls
                        Security = true
                    });
                });
    
            }


    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, DataSeeder seeder)
            {
                loggerFactory.AddFile("Logs/myapp-{Date}.txt");
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                    app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
                    {
                        HotModuleReplacement = true
                    });
                }
                else
                {
                    app.UseExceptionHandler("/Home/Error");
                }
                app.UseDeveloperExceptionPage();
                app.UseStaticFiles();
    
                
                app.UseAuthentication();
    
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Index}/{id?}");
                });
                // here you can see we make sure it doesn't start with /api, if it does, 
                // it'll 404 within .NET if it can't be found
                app.MapWhen(x => !x.Request.Path.Value.StartsWith("/api"), builder =>
                {
                    builder.UseMvc(routes =>
                    {
                        routes.MapSpaFallbackRoute(
                            name: "spa-fallback",
                            defaults: new { controller = "Home", action = "Index" });
                    });
                });
    
                seeder.SeedAsync().Wait();
            }

    Freitag, 24. November 2017 12:26