Base64, закодированный в AspNetCore Api Route - PullRequest
0 голосов
/ 25 июня 2018

Я создаю OCSP Responder , следуя правилам, определенным в RFC 6960 .

Итак, мне нужно реализовать GET служба, маршрут которой ДОЛЖЕН быть:

{url}/{url-encoding of base-64 encoding of the DER encoding of the OCSPRequest}

Я создал свое действие GET:

[Route("api/ocsp")]
public class OcspController : Controller
{
    [HttpGet]
    [Route("{encoded}")]
    public async Task<IActionResult> Get(string encoded)
    {
        var ocspHttpRequest = await Request.ToOcspHttpRequest();
        var ocspHttpResponse =  await OcspResponder.Respond(ocspHttpRequest);
        return new OcspActionResult(ocspHttpResponse);
    }
    ...
 }

Однако ASP.NET Core не находит или возвращает неверный запрос на маршрут, когдаURL-адрес закодирован, что необходимо.

Запрос Ocsp в base64 (обратите внимание, что он имеет две строки):

MEkwRzBFMEMwQTAJBgUrDgMCGgUABBR1vr6HF4T/UsADPXoNr6lpJ1JRowQUJfgJ
6MaP2huu1lFzJOFlkswOcM8CCB6PD3SWpxwf

Кодирование URL-адреса запроса o64 base64:

MEkwRzBFMEMwQTAJBgUrDgMCGgUABBR1vr6HF4T%2FUsADPXoNr6lpJ1JRowQUJfgJ%0A6MaP2huu1lFzJOFlkswOcM8CCB6PD3SWpxwf

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 25 июня 2018

Некоторые символы, полученные в результате кодировки Base64, недопустимы в пути URL. Это можно изменить, но это установлено по причине: а именно для безопасности. Если вы разрешите этих персонажей, вы открываете себя множеству атак, которые иначе были бы невозможны.

Однако вы можете передать его как часть строки запроса . Вы не получите ошибок при такой обработке.

...