c# - How do i set up a default for ActiveAuthenticationSchemes? -
in asp.net core 2 project, have custom authenticationhandler middleware want plug in.  
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));     } } in startup have following:
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);         });     }); } and view controller:
[route("api/[controller]")] public class valuescontroller : controller {     // api/values/works     [httpget]     [route("works")]     [authorize(activeauthenticationschemes = "basicauth")]     public string works()     {         return "works";     }      // api/values/doesnotwork     [httpget]     [route("doesnotwork")]     [authorize]     public string doesnotwork()     {         return "does not work";     }  } my authenticator handleauthenticateasync called when specify activeauthenticationschemes scheme name, otherwise not.  have demo app showing behavior here: https://github.com/johnpaguirre/authenticationschemaproblem
i want basicauthenticationmiddleware log in demo logic. how can make activeauthenticationschemes default "basicauth" requests? 
anyone have ideas on missing?
i don't think can set default, have other options.
- create own custom authorisation attribute: - public class basicauthauthorizeattribute : authorizeattribute { public basicauthauthorizeattribute() { activeauthenticationschemes = "basicauth"; } }- and use on actions before: - [basicauthauthorize] public string someaction() { //snip }
- add - authorizeattribute actions , override needed. that, in `` method:- public void configureservices(iservicecollection services) { services.addmvc(options => { options.filters.add(new authorizeattribute { activeauthenticationschemes = "basicauth" }); }); //snip }- and overriding it: - [allowanonymous] public string unsecureaction() { //snip }
Comments
Post a Comment