使用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
)?
答案 0 :(得分:19)
所以,回答我自己的问题,如果我错了,请纠正我,但是:
var remoteIpAddresss = context.Request.RemoteIpAddress;
是客户端的IP 地址(请求身份验证令牌的用户),
var localIpAddress = context.Request.LocalIpAddress;
是 Web Api的IP 地址(托管API的地方)。