、私はプラグインするカスタムAuthenticationHandler
ミドルウェアを持っている私のスタートアップでActiveAuthenticationSchemesのデフォルトを設定するにはどうすればよいですか?私のASP.NetのCore 2プロジェクトで
public class BasicAuthenticationMiddleware : AuthenticationHandler<AuthenticationSchemeOptions>
{
public BasicAuthenticationMiddleware(IOptionsMonitor<AuthenticationSchemeOptions> options,
ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock)
: base(options, logger, encoder, clock)
{
}
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
{
var principal = new GenericPrincipal(new GenericIdentity("User"), null);
var ticket = new AuthenticationTicket(principal, new AuthenticationProperties(), "BasicAuth");
return Task.FromResult(AuthenticateResult.Success(ticket));
}
}
私は、次のいます。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = "BasicAuth";
options.DefaultChallengeScheme = "BasicAuth";
options.AddScheme("BasicAuth", x => {
x.DisplayName = "BasicAuthenticationMiddleware";
x.HandlerType = typeof(BasicAuthenticationMiddleware);
});
});
}
そして最後に私の見解コントローラ:
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values/Works
[HttpGet]
[Route("Works")]
[Authorize(ActiveAuthenticationSchemes = "BasicAuth")]
public string Works()
{
return "works";
}
// GET api/values/DoesNotWork
[HttpGet]
[Route("DoesNotWork")]
[Authorize]
public string DoesNotWork()
{
return "does not work";
}
}
私はSCHEMに
ActiveAuthenticationSchemes
を指定するときに私のオーセンティケータ
HandleAuthenticateAsync
が呼び出されます
eの名前ですが、それ以外の場合はそうなりません。 https://github.com/JohnPAguirre/AuthenticationSchemaProblem
私のBasicAuthenticationMiddleware
に私のデモのロジックでログオンしたいと思っています。 ActiveAuthenticationSchemes
をすべての要求に対して「BasicAuth」にするにはどうすればよいですか?
誰かが私が紛失している可能性のあるアイディアはありますか?
パラメータを指定せずに 'Authorize'を実行すると、ユーザーがログインしているかどうかを確認するだけです。正確に何をしたいですか? – DavidG
私のBasicAuthenticationMiddlewareが私のデモロジックで全員をログに記録したいと思っています。どのようにしてActiveAuthenticationSchemesのデフォルトを "BasicAuth"にすることができますか? – JohnAguirre
'BasicAuth"を 'BasicAuthenticationMiddleware'クラスで定数として宣言することをお勧めします。あなたはそれを書いている間にタイプミスをしたくありません。 –