2017-03-22 16 views
1

私はIdentityServer4で保護したいAspNetCore Web APIを持っています。私はIdentityServer4を正常に実装しており、[Authorize]属性を使用してMVCコントローラのメソッドを確保することに問題はありません。Asp.NetCoreミドルウェア認可

カスタム(非MVC)ミドルウェアでセキュリティを強制する方法を理解できません。例えば、私のStartup.csで、私が持っている:

app.Use(async (context, next) => 
{ 
    // I want to require an authenticated user here 
    using (var writer = new StreamWriter(context.Response.Body)) 
    { 
    await writer.WriteAsync(string.Format("Welcome to the jungle, {0}", context.User.Identity.Name); 
    } 
}); 

私はブルートフォースアプローチを取ることができますが、はっきりapp.UseIdentityServer();を大きく持ち上げることを処理するために適していたので、私は再発明する必要はありませんここの車輪。

答えて

1

私の提案は、カスタムのowinミドルウェアの前にちょうどapp.UseIdentityServer()を置くことです。すべてのミドルウェアは、コードに書かれた順番に呼び出されます。したがって、許可されていないユーザーは、カスタムミドルウェアに到達する前にフィルタリングされ、リダイレクトされます。

+0

私はこれをしましたが、ユーザーは 'app.UseIdentityServer()'を置くだけでログインするように促されません。これは、いくつかのMVCメソッドが '[Authorize]'属性でタグ付けされない場合があるため、匿名アクセスが許可されるべきであることを意味するので意味があります。 –

関連する問題