2015-03-05 32 views
10

Owin Security'yi kullanarak, API'nin 2 kimlik doğrulama yöntemi kullanmasını sağlamaya çalışıyorum.Owin auth - auth jetonunu isteyen istemcinin IP adresi nasıl alınır

beni API bir auth simgesi için ilk isteği gönderme istemci ait IP adresini erişmenizi sağlar context değişken (OAuthGrantResourceOwnerCredentialsContext) bir özellik var mı?

benim yetkilendirme yönteminin temel bir şerit öylesine benziyor: Ben remoteIpAddress ve localIpAddress anladığım

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.) 
    } 
} 

API en (yani API barındırıldığı yer) bulunmaktadır. İsteğin hangi IP adresinden (ve bağlantı noktasından) gönderildiğini nasıl öğrenebilirim?

Müşteri bu bilgileri kendileri göndermeli mi?

Yetkilendirme yoluna ek parametreler eklemem gerekir mi? (Tipik username, password, grant_type) ile birlikte mi?

cevap

17

Yani, yanılıyorsam düzeltin, benim kendi soruya cevap ancak:

var remoteIpAddresss = context.Request.RemoteIpAddress; 

müşterinin IP Adresi (kullanıcı kimlik doğrulama anahtarı isteyerek) ve

var localIpAddress = context.Request.LocalIpAddress; 
olduğunu

, Web API'sinin IP adresidir (API'nın barındırıldığı yerdir).

+1

Bunu da merak ediyordum, bir VM üzerinde (farklı bir IP ile) bir proje oluşturdum, ana makineden bir istek gönderdim ve gerçekten doğru. 'context.Request.RemoteIpAddress' ifadesini isteyen istemcinin IP'sini gösterdi ve 'context.Request.LocalIpAddress' API'nın barındırıldığı IP'yi gösterdi. –