2017-01-23 1 views
1

Ich begann zu tun angular2 + asp.net core Anwendung, begann die Umsetzung Auth0. Ich habe eine Client-Anwendung und einen Benutzer erstellt. Hierauth0 Berechtigung zu asp.net Kern api

ist Client-Anwendung Setup, sofern url für Api:

enter image description here

Benutzeranmeldung funktioniert:

enter image description here

Jetzt habe ich eine api mit diesem controller:

[Route("api")] 
public class PingController : Controller 
{ 
    [Authorize] 
    [HttpGet] 
    [Route("ping/secure")] 
    public string PingSecured() 
    { 
     return "All good. You only get this message if you are authenticated."; 
    } 
} 

Und in startup.cs Ich habe versucht, wie diese Umsetzung:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

     var options = new JwtBearerOptions 
     { 
      Audience = "uUdThU122xYPugR8gLoNTr3HdJ6sWvQV", 
      Authority = "https://dntquitpls.eu.auth0.com/", 

     }; 

     if (env.IsDevelopment()) 
     { 
      app.UseBrowserLink(); 
      app.UseDeveloperExceptionPage(); 
     }; 

     app.UseJwtBearerAuthentication(options); 

     app.UseCors(builder => 
        builder.WithOrigins("http://localhost:61290/").AllowAnyOrigin() 
          .AllowAnyHeader() 
          .AllowAnyMethod() 
        ); 

     app.UseDefaultFiles(); 

     app.UseStaticFiles(); 

     app.UseMvc(routes => 
     { 
      routes.MapWebApiRoute("defaultApi", 
            "api/{controller}/{id?}"); 
     }); 
    } 

Und es funktioniert nicht diese bekommen:

enter image description here

Api Teil von Auth0Api Tutorial durchgeführt wird, zum Beispiel, wenn ich erstelle a Api und es gibt einen Test Bearer Token es funktioniert damit in api, auch ich konfigurieren Startup.cs Datei von diesem Api, aber leider mit meinem Bearer Token von Antwort funktioniert nicht.

Bitte irgendwelche Ideen, warum es nicht funktioniert und ich werde nicht autorisiert?

Antwort

4

eine Lösung gefunden, jetzt funktioniert es, das Problem in den Optionen HS256 Encoding in Startup.cs Datei war, die für UseJwtBearerAuthentication verwendet wird, Lösung:

var keyAsBytes = Encoding.ASCII.GetBytes("CLIENT_SECRET"); 

    var options = new JwtBearerOptions 
    { 
     TokenValidationParameters = 
     { 
      ValidIssuer = "https://dntquitpls.eu.auth0.com/", 
      ValidAudience = "uUdThU122xYPugR8gLoNTr3HdJ6sWvQV", 
      IssuerSigningKey = new SymmetricSecurityKey(keyAsBytes) 
     } 
    }; 
    app.UseJwtBearerAuthentication(options); 

Quelle:

http://www.jerriepelser.com/blog/using-roles-with-the-jwt-middleware/

wenn Wenn Sie mit der RS256-Codierung arbeiten möchten, verwenden Sie Folgendes:

 var certificationData = Configuration["auth0:certificate"]; 
     var certificate = new X509Certificate2(Convert.FromBase64String(certificationData)); 

     var options = new JwtBearerOptions() 
     { 
      Audience = Configuration["auth0:clientId"], 
      Authority = Configuration["auth0:authority"], 
      AutomaticChallenge = true, 
      AutomaticAuthenticate = true, 

      TokenValidationParameters = { 
       ValidIssuer = Configuration["auth0:authority"], 
       ValidAudience = Configuration["auth0:clientId"], 
       IssuerSigningKey = new X509SecurityKey(certificate) 
      } 
     }; 

     app.UseJwtBearerAuthentication(options);