0
我有一個工作WebApi2應用程序,它採用了承載令牌驗證框,就像是在原來的Visual Studio項目模板。
我想添加一個自定義數據到生成的令牌,然後檢查該自定義數據時,隨後的api調用發生什麼呈現此令牌。
爲了舉例說明,我希望在創建令牌時存儲調用者的IP地址,然後在驗證令牌時檢查使用令牌的調用是否具有相同的IP。
我發現自定義類
public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider
在我的項目,我也看到OAuthOptions
被配置爲使用自定義類在啓動時。
我想在哪裏添加我的自定義標記數據(IP):
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
在這裏我可以把它添加到售票屬性自定義數據。
問題
但是我無法找出什麼方法來覈對令牌有這個數據,和它匹配的實際通話的IP,如果沒有,則認爲該令牌無效?
剩餘在IP示例中,我不清楚在哪裏,何時以及如何檢查存儲的IP,並且_reject_請求無效? –
@ g.pickardou在用戶通過授權並將他的ip保存在聲明中後,您可以創建自己的屬性(繼承ActionFilterAttribute)來驗證傳入的請求。然後在OnActionExecuting中,您可以編寫: – grbulat
'var owinContext =(OwinContext)actionContext.Request.Properties [「MS_OwinContext」]; string ip = owinContext.Request.RemoteIpAddress; 權利要求userIpClaim =((ClaimsIdentity)actionContext.ControllerContext.RequestContext.Principal.Identity) .Claims .FirstOrDefault(C => c.Type == ClaimTypes.NameIdentifier); 如果(userIpClaim == NULL \t \t && string.CompareOrdinal(userIpClaim.Value,IP)!= 0){ actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode。未經授權); return; }' – grbulat