Я думаю, что клиент решает, что отправлять, а сервер просто принимает или отклоняет. Это означает, что в зависимости от того, что запрашивает сервер, клиент может или не может быть в состоянии выполнить. Поэтому, если сервер сообщает «Согласовать», клиент может отправить либо токен NTLM, либо токен Kerberos ...?
Если вы пишете сервер, который должен аутентифицировать клиентов через Kerberos, то вы сможете указать, хотите ли вы принять или отклонить токен, или сделать так, чтобы клиент повторил попытку, используя какую-то другую схему ... как Basic (не рекомендуется).
Если вы пишете клиент, просто отправьте тот токен, который вам нужен (NTLM или Kerberos), и сервер скажет вам, что делать дальше (если что-нибудь, сервер может принять).
Взгляните на этот проект с открытым исходным кодом http://spnego.sourceforge.net В проекте реализован фильтр сервлетов SPNEGO Http, а также объект SpnegoHttpURLConnection.