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 балансировщика нагрузки.