2017-03-24 9 views
0

私はトークンで保護された安全なWeb APIを持っています。CORSを有効にしています。APIは角形APPだけでなく、Xamarin App 、ios、uwp)。XamarinはWEB API(CORS)を使用しています

通常、CORSでは、どの起源がWEB APIを使用できるかを明示します。しかし、xamarinアプリは起源(ドメイン名)ではないので、ここでCORSをチェックするにはどうすればいいですか?

+1

これはあなたのXamarinのアプリに関する独自の何か他のものをチェックするために、そのような別のカスタムヘッダーとして要求に来るすべてなどを変更することができますあなたのXamarinアプリとAngularアプリだけがあなたのAPIに接続でき、他のアプリを本質的にブロックすることができます。正しい?有用な情報の追加部分は、ネットのWeb APIについて話しており、その中で非同期機能を使用しているかどうかです。 – Kyle

+0

おそらく 'トークン'の明快さ - APIアクセスを制限する方法は(すでに)あると述べましたか? – EdSF

答えて

1

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); 
    } 
} 
関連する問題