0
私はトークンで保護された安全なWeb APIを持っています。CORSを有効にしています。APIは角形APPだけでなく、Xamarin App 、ios、uwp)。XamarinはWEB API(CORS)を使用しています
通常、CORSでは、どの起源がWEB APIを使用できるかを明示します。しかし、xamarinアプリは起源(ドメイン名)ではないので、ここでCORSをチェックするにはどうすればいいですか?
私はトークンで保護された安全なWeb APIを持っています。CORSを有効にしています。APIは角形APPだけでなく、Xamarin App 、ios、uwp)。XamarinはWEB API(CORS)を使用しています
通常、CORSでは、どの起源がWEB APIを使用できるかを明示します。しかし、xamarinアプリは起源(ドメイン名)ではないので、ここでCORSをチェックするにはどうすればいいですか?
Async Web APIを使用している場合、SendAsyncをオーバーライドするときにチェックを追加するだけで、実際のコードに渡す前にAPIが要求を検証するように強制できます。ここでは、Xamarinモバイルアプリから来るカスタムのユーザーエージェント文字列をチェックすることによって、これを行う方法を示す模擬的な例を示します。あなたは明らかに簡単ので、本当にあなたが好きなCORSをチェックすることはあまりないです
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);
}
}
これはあなたのXamarinのアプリに関する独自の何か他のものをチェックするために、そのような別のカスタムヘッダーとして要求に来るすべてなどを変更することができますあなたのXamarinアプリとAngularアプリだけがあなたのAPIに接続でき、他のアプリを本質的にブロックすることができます。正しい?有用な情報の追加部分は、ネットのWeb APIについて話しており、その中で非同期機能を使用しているかどうかです。 – Kyle
おそらく 'トークン'の明快さ - APIアクセスを制限する方法は(すでに)あると述べましたか? – EdSF