Exemplo n.º 1
0
        internal AuthStatus IsValidAuthRole(string role, bool isPublicClient)
        {
            if (string.IsNullOrWhiteSpace(role))
            {
                return(AuthStatus.KeineRolleDefiniert);
            }

            if ((role == AccessRoles.RoleOe2 || role == AccessRoles.RoleOe3) &&
                (controllerHelper.IsKerberosAuthentication() || controllerHelper.IsSmartcartAuthentication()))
            {
                throw new AuthenticationException("Kerberos oder Smartcard dürfen nicht für Ö2 und Ö3 verwendet werden");
            }

            if ((role == AccessRoles.RoleBVW || role == AccessRoles.RoleAS || role == AccessRoles.RoleBAR) &&
                !(controllerHelper.IsKerberosAuthentication() || controllerHelper.IsSmartcartAuthentication()))
            {
                throw new AuthenticationException("Interne Benutzerrollen (BVW, AS und BAR) müssen Kerberos oder Smartcard verwenden");
            }

            // Public-Client
            if (isPublicClient)
            {
                switch (role.GetRolePublicClientEnum())
                {
                // Keine spezial Behandlung
                case AccessRolesEnum.Ö2:
                case AccessRolesEnum.BVW:
                    return(AuthStatus.Ok);

                // SMS-Anmeldung
                case AccessRolesEnum.Ö3:
                    return(controllerHelper.IsMTanAuthentication()
                            ? AuthStatus.Ok
                            : AuthStatus.KeineMTanAuthentication);

                // Kerberos Pflicht
                case AccessRolesEnum.AS:
                case AccessRolesEnum.BAR:
                    return(controllerHelper.IsKerberosAuthentication()
                            ? AuthStatus.Ok
                            : AuthStatus.KeineKerberosAuthentication);

                default:
                    throw new InvalidOperationException("Nicht definiertes Rollen handling");
                }
            }

            // Management-Client
            switch (role)
            {
            // Kerberos Pflicht
            case AccessRoles.RoleMgntAllow:
            case AccessRoles.RoleMgntAppo:
                return(controllerHelper.IsKerberosAuthentication()
                        ? AuthStatus.Ok
                        : AuthStatus.KeineKerberosAuthentication);

            default:
                throw new ArgumentOutOfRangeException(nameof(role), "Nicht definiertes Rollen handling");
            }
        }