Следующая строка неверна:
KerberosSecurityTokenProvider k1 = new KerberosSecurityTokenProvider(spn, System.Security.Principal.TokenImpersonationLevel.Impersonation, networkCred);
Вы говорите, чтобы получить билет Kerberos для текущего пользователя, нацеленного на службу с именем SPN, которое, как оказалось, является именемтекущий пользователь.
Смысл параметра SPN - указать имя службы , на которую вы хотите получить билет.Kerberos не позволяет вам просто получить билет, который можно использовать где угодно.Вы должны запросить билет на определенную услугу.
SPN принимает форму service/host.com@optional.realm.com
.Поскольку это REST-сервис, он, скорее всего, будет HTTP/your.service.com
.
Имейте в виду, что имя участника-службы должно быть зарегистрировано на субъекте службы в Active Directory, в противном случае клиент не сможет искать службу.