authorization - write single API accessible through asp.net identity user and bearer token both -
i have created asp.net mvc 6 application , configured asp.net identity users using entity framework 7 working fine. added aspnet.security.openidconnect.server
token provider server working fine.
then created api controller follows:
[route("api/[controller]")] public class valuescontroller : controller { // get: api/values [authorize(policy = "somepolicy")] [httpget] public ienumerable get() { return new string[] { "value1", "value2" }; } }
question: want configure authorization in such way either bearer token or asp.net identity user valid (and belong role), want allow user access api.
here tried in startup.cs:
services.addauthorization(options => { // add new policy requiring "scope" claim // containing "api-resource-controller" value. options.addpolicy("api", policy => { policy.addauthenticationschemes(jwtbearerdefaults.authenticationscheme); policy.requireclaim(openidconnectconstants.claims.scope, "offline_access"); }); });
then if add [authorize(policy="api")]
api controller, respecting bearer tokens, not identity users.
any appreciated!
policy.addauthenticationschemes
supports multiple schemes, - in theory - that:
services.addauthorization(options => { options.addpolicy("api", policy => { policy.addauthenticationschemes( /* scheme 1: */ jwtbearerdefaults.authenticationscheme, /* scheme 2: */ typeof(identitycookieoptions).namespace + ".application"); }); });
note:
typeof(identitycookieoptions).namespace + ".application"
default authentication scheme used asp.net identity 3: https://github.com/aspnet/identity/blob/3.0.0-rc1/src/microsoft.aspnet.identity/identitycookieoptions.cs#l61
alternatively, remove policy.addauthenticationschemes
call , configure bearer , cookies middleware use automatic authentication (automaticauthenticate = true
, default value cookies middleware, not jwt middleware).
in practice, it's absolutely not recommended defeats whole purpose of using bearer-only authentication: mitigating xsrf attacks. if want support cookies + bearer authentication, should strongly consider implementing xsrf countermeasures.
Comments
Post a Comment