2017-01-23 3 views
1

Я начал делать заявку angular2 + asp.net core, начал внедрять Auth0. Я создал клиентское приложение и пользователя.авторизация auth0 для asp.net core api

Вот настройка клиентского приложения, при условии url для Api:

enter image description here

Логин Пользователь работает отлично:

enter image description here

Теперь у меня есть апи с этим 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."; 
    } 
} 

И в startup.cs Я попытался реализации, как это:

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?}"); 
     }); 
    } 

И это не работает получать это:

enter image description here

Api часть делается Auth0Api учебник, например, если я создаю a Api и есть токен Bearer, он работает с этим в api, также я настраиваю файл Startup.cs по этому номеру Api, но, к сожалению, с моим номером Bearer токен от ответа не работает.

Пожалуйста, любые идеи, почему это не работает, и я не получаю разрешение?

ответ

4

Найдено решение, теперь он работает, проблема была в Startup.cs файла в настройках HS256 кодирования, который используется для UseJwtBearerAuthentication, решение:

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); 

Источник:

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

если вы хотите работать с кодировкой RS256, используя это:

 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);