2017-07-10 14 views
0

私はthis tutorialの特定のセクションに従っていますが、 "*"を使用するのが安全かどうか、または自分のドメイン名として入れるべきなのかどうか疑問に思っていますか?この状況では、アクセス制御 - 許可 - 起点OK?

public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider 
{ 
    public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) 
    { 
     context.Validated(); 
    } 

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
    { 

     context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); 

     using (AuthRepository _repo = new AuthRepository()) 
     { 
      IdentityUser user = await _repo.FindUser(context.UserName, context.Password); 

      if (user == null) 
      { 
       context.SetError("invalid_grant", "The user name or password is incorrect."); 
       return; 
      } 
     } 

     var identity = new ClaimsIdentity(context.Options.AuthenticationType); 
     identity.AddClaim(new Claim("sub", context.UserName)); 
     identity.AddClaim(new Claim("role", "user")); 

     context.Validated(identity); 

    } 
} 

答えて

1

具体的な使用例によって異なります。

可能な限りあなた自身のドメイン(または複数の場合はドメインのリスト)を制限するのが理想的ですが、そのAPIに公開アクセスを許可する必要がある場合は、 「*」を許可する必要があります。

CORSの制限を非常にきめ細かく設定できることも指摘しておきます。あなたが必要な場合、それぞれのメソッドのために。 MSドキュメントから以下の例を参照:https://docs.microsoft.com/en-us/aspnet/core/security/cors

[HttpGet] 
[EnableCors("AllowSpecificOrigin")] 
public IEnumerable<string> Get() 
{ 
    return new string[] { "value1", "value2" }; 
} 
+0

彼らはapp.UseCorsを使用チュートリアル(Microsoft.Owin.Cors.CorsOptions.AllowAll)の別の部分で;.彼らはお互いに働いているのか、お互いを無視していますか? – chobo2

+0

これらは一緒に使用できます - グローバルポリシーを定義してから、異なる要件を持つ特定のクラス/メソッドを装飾することによってグローバル設定をオーバーライドできます。 – Steveland83

+0

これを次のように変更するとします。context.OwinContext.Response.Headers.Add( "Access-Control-Allow-Origin"、new [] {"MyD​​omain"}); pp.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);を取り消します。 – chobo2

関連する問題