/// <summary> /// Get authentication schemes /// </summary> /// <param name="authenticationSchemes"></param> /// <returns></returns> private string GetAuthenticationSchemes(GearAuthenticationScheme authenticationSchemes) { var flags = new List <GearAuthenticationScheme>(); if ((authenticationSchemes & GearAuthenticationScheme.Identity) == GearAuthenticationScheme.Identity) { flags.Add(GearAuthenticationScheme.Identity); } if ((authenticationSchemes & GearAuthenticationScheme.Bearer) == GearAuthenticationScheme.Bearer) { flags.Add(GearAuthenticationScheme.Bearer); } if ((authenticationSchemes & GearAuthenticationScheme.Cookies) == GearAuthenticationScheme.Cookies) { flags.Add(GearAuthenticationScheme.Cookies); } if ((authenticationSchemes & GearAuthenticationScheme.IdentityWithBearer) == GearAuthenticationScheme.IdentityWithBearer) { flags.Add(GearAuthenticationScheme.IdentityWithBearer); } var schemes = new List <string>(); foreach (var flag in flags) { switch (flag) { case GearAuthenticationScheme.Identity: schemes.Add(IdentityConstants.ApplicationScheme); break; case GearAuthenticationScheme.Bearer: schemes.Add(JwtBearerDefaults.AuthenticationScheme); break; case GearAuthenticationScheme.IdentityWithBearer: schemes.Add(IdentityConstants.ApplicationScheme + "," + JwtBearerDefaults.AuthenticationScheme); break; case GearAuthenticationScheme.Cookies: schemes.Add(CookieAuthenticationDefaults.AuthenticationScheme); break; default: throw new ArgumentOutOfRangeException(nameof(authenticationSchemes), authenticationSchemes, null); } } var authSchemes = string.Join(",", schemes); return(authSchemes); }
/// <summary> /// Schemes shortcut /// </summary> /// <param name="authenticationSchemes"></param> public GearAuthorizeAttribute(GearAuthenticationScheme authenticationSchemes) { AuthenticationSchemes = GetAuthenticationSchemes(authenticationSchemes); }