Swagger - как добавить поле токена защиты от подделки в пользовательский интерфейс, который будет использоваться в заголовках - PullRequest
0 голосов
/ 17 мая 2019

У меня есть несколько конечных точек HTTP POST, для которых требуется, чтобы токены AntiForgery были прикреплены, например, к заголовку с именем RequestVerificationToken.

Как добавить поле с именем, например "AFT Token", в каждый запрос HTTP POST на SwaggerUIкоторый будет использовать свое значение в заголовке с именем RequestVerificationToken?

Возможно ли это сделать из кода C # или мне нужно отредактировать некоторые конфиги Swagger?

Пример конечной точки:

[HttpPost]
[ValidateAntiForgeryToken]
[Route("[controller]/[action]")]
public async Task<IActionResult> Test([FromBody]Type data)

1 Ответ

0 голосов
/ 17 мая 2019

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

Например:

  app.Use(next => context =>
    {
        string path = context.Request.Path.Value;

        if (
            string.Equals(path, "/", StringComparison.OrdinalIgnoreCase) ||
            string.Equals(path, "/swagger", StringComparison.OrdinalIgnoreCase))
        {
            // The request token can be sent as a JavaScript-readable cookie, 
            // and Angular uses it by default.
            var tokens = antiforgery.GetAndStoreTokens(context);
            context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken, 
                new CookieOptions() { HttpOnly = false });
        }

        return next(context);
    });

Но я бы не стал этого делать, так как это позволило бы получить доступ к чванству в других средах, кроме разработки.

То, что я бы сделал, это как пара.

1. Разрешить чванство только в разработке. 2. AutoValidateAntiforgery только в не разработке.

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

Прочитайте https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery?view=aspnetcore-2.2

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...