Owin auth - как получить IP-адрес клиента, запрашивающего токен аутентификации

Используя Owin Security, я пытаюсь сделать API двумя методами аутентификации.

Есть ли свойство в переменной context (OAuthGrantResourceOwnerCredentialsContext), которая позволяет мне получить доступ к IP-адресу клиента , отправив исходный запрос для токена аутентификации к API?

Базовая полоса моего метода auth выглядит так:

public override async Task GrantResourceOwnerCredentials(
    OAuthGrantResourceOwnerCredentialsContext context)
{
    await Task.Run(() =>
    {
        var remoteIpAddresss = context.Request.RemoteIpAddress;
        var localIpAddress = context.Request.LocalIpAddress;


        // ... authenticate process goes here (AddClaim, etc.)
    }
}

Из того, что я понимаю, remoteIpAddress и localIpAddress - это API (например, где размещен API). Как узнать, с какого IP-адреса (и порта) был отправлен запрос?

Нужно ли клиенту самостоятельно отправлять эту информацию?

Должен ли я добавлять дополнительные параметры в путь auth? (кроме типичных username, password, grant_type)?

Ответ 1

Итак, чтобы ответить на мой собственный вопрос, исправьте меня, если я ошибаюсь, но:

var remoteIpAddresss = context.Request.RemoteIpAddress;

- это IP-адрес клиента (пользователь, запрашивающий токен аутентификации), и

var localIpAddress = context.Request.LocalIpAddress;

- это адрес Web Api IP (где размещен API).

Ответ 2

он отлично работает и в балансировщике нагрузки? в моем сервисе он возвращает только ip балансировщика нагрузки.