Для первой части у вас может быть дополнительная переменная в объявлении действия, например:
public ActionResult Index(Itenant tenant)
и вместо return currentTenant.HomeIndex () вы можете сделать
return Action("Index", new { tenant = currentTenant});
, который будет работать автоматически. (Или вы можете пропустить новую часть {tenant ..} и использовать связующее для пользовательской модели, если вам хочется приключений!)
Вторая часть, это на самом деле умнее. Если вы хотите настраиваемое разрешение безопасности с перенаправлением, вам нужно внедрить пользовательский фильтр.