Ядро C # .net в докере JWT Ошибка авторизации 401 Несанкционированный - PullRequest
0 голосов
/ 06 июня 2018

Требуется авторизация для .net Core web api в докере через JWT Bearer

В моем Startup.cs:

...
public void ConfigureServices(IServiceCollection services) {
  var pem = File.ReadAllText("publickey.pem");
  byte[] bytes = Encoding.ASCII.GetBytes(pem);

  services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options => {
      options.TokenValidationParameters = new TokenValidationParameters {
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,
        IssuerSigningKey = new SymmetricSecurityKey(bytes)
      };
    });

    services.AddMvc();
  }

  public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
    if (env.IsDevelopment()) {
      app.UseDeveloperExceptionPage();
    }

    app.UseAuthentication();
    app.UseMvc();
  }
...

Мой publickey.pem выглядит так:

-----BEGIN PUBLIC KEY-----
JBkjgkVBJKlgkljvk.jgk;4jkgJLBjkgJHcvbnVBcCghfb+dfdFdf5fdf54ASfG5
Sov1MTHDHZHORsZgWQKTbmfv/BjsgdfbvKJGuklVhjklTuiltgjkgtJKLgJKLTUG
diGauBf4HfFZP/iJZq43cuPXKXRRhX8Xp/3FGZ1HL4FRiXdAnoPuY/ofBclXEIUM
XWpJcBdN4pUiV2sCFDDMx6+KDl69orsfIwHnX3trjIeSJX7RWJyBOI8A1PJmeYFJ
T9Paq5qFdxxF6udNoxhZN5kTTmCqZTLesQf3mk1HLj759ZS8E1NlxoXWS3h8D3jd
SHesaEltPlrdA/y3rRa84OrwyryLp9kh8IOYXIifXPyeP1RWP2bGDkBcHiSyzgr/
cwIDAQAB
-----END PUBLIC KEY-----

И мой контроллер:

[Route("check")]
public class CheckController : ReqController {
  [HttpGet, Authorize]
  public Response Task() {
    try {
      token = Request.Headers["Authorization"];
      DB.Check();
    } catch (Exception e) {
      response.Status = e.Message;
    }
    return response;
  }
}

Вызов моего API через Почтальон: я выбрал GET метод.На вкладке Authorization выбрал Bearer Token и вставил свой токен

После отправки запроса в заголовки ответа я получаю:

Content-Length →0
Date →Wed, 06 Jun 2018 08:01:02 GMT
Server →Kestrel
WWW-Authenticate →Bearer error="invalid_token", error_description="The signature is invalid"

На сайте https://jwt.io/ Я также проверяюмой токен (RSASHA256) с открытым ключом, который у меня есть и там, покажите мне Signature Verified

Где я мог ошибиться или что-то пропустил?

...