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"); } }