Пример #1
0
        /// <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);
        }
Пример #2
0
 /// <summary>
 /// Schemes shortcut
 /// </summary>
 /// <param name="authenticationSchemes"></param>
 public GearAuthorizeAttribute(GearAuthenticationScheme authenticationSchemes)
 {
     AuthenticationSchemes = GetAuthenticationSchemes(authenticationSchemes);
 }