ClaimsAuthorizationManager
ソースによると、の子クラスCheckAccess
が false を返す場合、フレームワークの設計により、セキュリティ例外がスローされます。
ApiController の関数を (たとえば) で装飾したい場合、このエラーをキャッチする方法はないようです[ClaimsPrincipalPermission(SecurityAction.Demand, Operation="Read", Resource="Something")]
。
サンプルの AuthorizationManager を既に作成し、ClaimsAuthorizationManager を派生させて、web.config に登録しました。この構成部分は機能します。
public class AuthorizationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
return false; // just to show that it will throw the security exception
}
}
そのため、何があっても失敗するように認証を設定しましたが、「侵襲的な」500 (内部サーバーエラーとして返されるセキュリティ例外) ではなく、401 応答をユーザーに返したいと考えています。
誰もこれに対する答えをどこにも持っていないようで、クライアントへの不正アクセスを通信するために 500 に落ち着くようです.