Работает именно так, как задумано. Все сводится к этому простому уравнению: если доступ не должен быть предоставлен, тогда не нужно проверять, должен ли быть разрешен доступ. В случае примера, который вы приводите здесь, вы должны сначала проверить правильную комбинацию пары имя пользователя / пароль, а затем проверить, есть ли у них доступ к системе. После того как вы проверите, имеют ли они доступ к системе, вы затем оцените, авторизованы ли они в соответствии с определенными политиками.
Рассмотрим этот базовый пример:
1) Имя пользователя и пароль совпадают с известным пользователем? Да. (Учетные данные службы)
2) Включен ли этот известный пользователь в систему? Да. (Авторизация службы)
3) Имеет ли этот известный пользователь роль «Х»? Да. (IAuthorizationPolicy)
Следовательно, рабочий процесс определен WCF.