Если вы ожидаете, что служба будет аутентифицировать каждый пользовательский вызов с именем пользователя и паролем, вы можете иметь любой код в своем валидаторе. Но если вы ожидаете использования экземпляра службы сеанса, вы, вероятно, также будете использовать контекст безопасности (сеанс безопасности). В этом случае только первый запрос аутентифицируется валидатором, а последующий запрос аутентифицируется токеном, сгенерированным во время установления контекста безопасности.
Edit:
Каждый работающий сервис представлен классом InstanceContext. Если у вас есть службы PerSession, InstanceContext одинаков для каждого вызова. Если вы храните ссылку на InstanceContext где-то, вы должны иметь возможность освободить экземпляр и закрыть сеанс - я никогда не пробовал, но это должно быть возможно.