0
我有一個安全的網絡api用令牌保護,我們讓它啓用CORS,並且我們希望確保API只被角APP和Xamarin應用(android ,ios,uwp)。Xamarin消費WEB API(CORS)
通常用CORS你明確地說出哪個起源可以使用WEB API。然而,xamarin應用程序不是源(域名),所以我如何在這裏檢查CORS?
我有一個安全的網絡api用令牌保護,我們讓它啓用CORS,並且我們希望確保API只被角APP和Xamarin應用(android ,ios,uwp)。Xamarin消費WEB API(CORS)
通常用CORS你明確地說出哪個起源可以使用WEB API。然而,xamarin應用程序不是源(域名),所以我如何在這裏檢查CORS?
如果您使用異步Web API,那麼您可以在重寫SendAsync時添加一個檢查,這將強制API驗證請求,然後再允許它通過您的實際代碼。下面是一個模擬示例,說明如何通過檢查來自Xamarin移動應用程序的自定義用戶代理字符串來執行此操作。你可以很容易地明顯改變這種檢查別的專有有關Xamarin應用所有進來的請求,如其他自定義頁眉等
public class SecureMyApi : DelegatingHandler {
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
// Extra security stop to verify mobile app should have access to API
var httpRequest = HttpContext.Current.Request;
if (!string.IsNullOrWhiteSpace(httpRequest.UserAgent) && (httpRequest.UserAgent.StartsWith(ConfigurationManager.AppSettings["MyCustomUserAgentString"])))
{
// Allow user to pass through
}
else
{
if (request.Method != HttpMethod.Get)
{
return request.CreateErrorResponse(HttpStatusCode.BadRequest, "You do not have permission to access the requested endpoint.");
}
}
return await base.SendAsync(request, cancellationToken);
}
}
所以它是不是真的這麼多,你要檢查CORS只要你想以確保只有您的Xamarin應用程序和Angular應用程序可以連接您的API,實質上阻止其他應用程序。正確?另外一個有用的信息是我們在討論一個網絡API,並且你是否使用了異步功能? – Kyle
也許對'token'的清晰度 - 你提到它已經(已經)限制API訪問的方法? – EdSF