2015-03-05 14 views
10

Sử dụng bảo mật Owin, tôi đang cố gắng tạo API có 2 phương pháp xác thực.Xác thực quyền sở hữu - cách lấy địa chỉ IP của ứng dụng khách yêu cầu mã thông báo xác thực

Có một tài sản trong context biến (OAuthGrantResourceOwnerCredentialsContext) cho phép tôi truy cập vào địa chỉ IP của client gửi yêu cầu ban đầu cho một thẻ auth API?

Một dải cơ bản của phương pháp auth của tôi trông giống như vậy:

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

Từ những gì tôi hiểu được remoteIpAddresslocalIpAddress là của API (ví dụ: nơi mà các API được lưu trữ). Làm cách nào để biết được địa chỉ IP (và cổng) mà yêu cầu được gửi từ đâu?

Khách hàng có cần tự gửi thông tin này không?

Tôi có nên thêm thông số bổ sung vào đường dẫn xác thực không? (bên cạnh username, password, grant_type) điển hình?

Trả lời

17

Vì vậy, để trả lời câu hỏi của riêng tôi, chính xác cho tôi nếu tôi sai, nhưng:

var remoteIpAddresss = context.Request.RemoteIpAddress; 

khách hàng của IP Địa chỉ (người dùng yêu cầu token auth), và

var localIpAddress = context.Request.LocalIpAddress; 

là địa chỉ IP của Web Api (nơi API được lưu trữ).

+1

Tôi đã tự hỏi điều này quá vì vậy tôi thiết lập một dự án trên một máy ảo (với một IP khác nhau), đã gửi một yêu cầu đến nó từ máy chủ và bạn thực sự là chính xác. 'context.Request.RemoteIpAddress' cho thấy IP của máy khách yêu cầu mã thông báo và' context.Request.LocalIpAddress' hiển thị IP nơi API được lưu trữ. –

Các vấn đề liên quan