2016-08-31 10 views
2

ASP.NET Core MVCアプリケーションから呼び出せる、動作しているAsp.NETコアWebApiサービスおよびASP.NET WebApiサービスがあります。このサービスは、AutoRest生成ラッパーを使用して呼び出されます。 OAuth2を使用してWebサイトが保護されている間、サービスには現在セキュリティレイヤはありません。OAuth2を使用した.NETコアWebApiサービスのセキュリティ保護とアクセス

私はサービスに以下を追加しました:

public void ConfigureServices(IServiceCollection services) 
    { 
     // Add framework services. 
     services.AddApplicationInsightsTelemetry(Configuration); 

     services.AddMvc(); 

     // NEW Authorisation 
     services.AddAuthorization(options => 
     { 
      options.AddPolicy("ApiAccess", policy => policy.RequireClaim("email")); 
     }); 

    } 

私のコントローラは、その確保されている:

[Authorize(Policy = "ApiAccess")] 
public class StatusController : Controller 

私はAutoRestラッパーを呼び出すとき、私は「未承認」の例外を取得しかし:

try 
     { 
      var service = new StatusAPI(new Uri("http://localhost:17237/")); 
      ViewData["State"] = service.ApiStatusGet(); 
     } 
     catch (Exception ex) 
     { 
      ViewData["State"] = new[] { new ServiceStatus { Name = "Health API", Message = "Is unreachable " + ex.Message } }; 
     } 

私の電話で申し立てを渡す方法が必要なのかどうかは分かりませんラッパーに、またはそれがサービスの設定に含まれていて、それがどのようにして主張を検出したのかを示します。

+0

は、認証ミドルウェアまたはプリンシパルでメール請求を埋めるいくつかのカスタムコードがありますか? – ycrumeyrolle

+0

理想的には、どのように構成する必要があるかを示す例を探しています – Mark

+0

電子メールクレームを含むトークンの種類は何も供給されていません。これは、 'StatusAPI'があなたのために扱うものですか? –

答えて

0

許可されたメールアドレスのようにクレームの値を指定してみてください。ここで示唆したように - https://docs.asp.net/en/latest/security/authorization/claims.html

は、コードAutorizationが認証なしで行うことはできません

options.AddPolicy("Founders", policy => policy.RequireClaim("EmployeeNumber", "1", "2", "3", "4", "5"));

+0

私が知っている限り、単にクレームの有効な価値を制限するだけで、私が知る限りでは、 – Mark

0

を繰り返しました。 最初にユーザーを認証してから、アクセス許可としてIDを確認する必要があります。

OAuth2 ASが提供するJWTをお持ちの場合は、JWT認証ミドルウェアを使用することができます。

public void ConfigureServices(IServiceCollection services) 
{ 
    // add the authentication dependencies 
    services.AddAuthentication(); 
} 

public void Configure(IApplicationBuilder app) 
{ 
    app.UseJwtBearerAuthentication(new JwtBearerOptions 
    { 
    // configure your JWT authentication here 
    }); 
} 

もちろん、JWTには「電子メール」の主張が含まれている必要があります。

あなたはASPNETコアサンプルを見ることができます。 https://github.com/aspnet/Security/blob/dev/samples/JwtBearerSample/Startup.cs#L67

関連する問題