Настройка Spring Security Kerberos - spn и keytab - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь запустить пример приложения Kerberos для Spring Spring, прежде чем попытаться интегрировать его в свое реальное приложение. Это приложение, которое я запускаю: https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server-win-auth/src/main

Я установил spn и создал таблицу ключей при запуске приложения, и пытаюсь получить доступ с помощью chrome, я получаю сообщение об ошибке 500

Который на консоли сервера отображается как:

Negotiate Header was invalid: 
org.springframework.security.authentication.BadCredentialsException: 
GSSContext name of the context initiator is null
at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator$KerberosValidateAction.run(SunJaasKerberosTicketValidator.java:253)

Из кода видно, что это происходит, когда getSrcName() из GSSContext возвращает ноль.

Теперь я бегу только на своем ноутбуке, чтобы попытаться заставить его работать. Java-процесс, который запускает весеннее приложение, выполняется под той же учетной записью Windows, которую я использую для входа в систему. DNS настроен так, чтобы я мог получить доступ к своему ноутбуку, используя laptop-name.mycompany.com Вот что я сделал для spn и keytab:

setspn -A HTTP/laptop-name.mycompany.com:8080 myWindowsUsername

ktpass -princ HTTP/laptop-name.mycompany.com:8080@MYCOMPANY.COM -pass password123 -mapuser myWindowsUsername@mycompany.com -out keytab.keytab -ptype KRB5_NT_PRINCIPAL

Внутри каталога java security я добавил krb5.conf, который содержит следующее:

[Libdefaults]
 permitted_enctypes = arcfour-hmac-md5 rc4-hmac aes256-cts aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc
 default_tgs_enctypes = arcfour-hmac-md5 rc4-hmac aes256-cts aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc
 default_tkt_enctypes = arcfour-hmac-md5 rc4-hmac aes256-cts aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc
 dns_lookup_kdc = true
 dns_lookup_realm = false

[Domain_realm]
 mycompany.com = MYCOMPANY.COM
 .mycompany.com = MYCOMPANY.COM 

Я не уверен, что это проблема, но когда я использую kinit для проверки keytab, я вижу это в нижней части вывода

Looking for keys for: -V@MYCOMPANY.COM
default etypes for default_tkt_enctypes: 23 23 18 17 16.
Exception: krb_error 0 Do not have keys of types listed in default_tkt_enctypes available; only have keys of following type:  No error
KrbException: Do not have keys of types listed in default_tkt_enctypes available; only have keys of following type:
    at sun.security.krb5.internal.crypto.EType.getDefaults(EType.java:280)
    at sun.security.krb5.KrbAsReqBuilder.build(KrbAsReqBuilder.java:261)
    at sun.security.krb5.KrbAsReqBuilder.send(KrbAsReqBuilder.java:315)
    at sun.security.krb5.KrbAsReqBuilder.action(KrbAsReqBuilder.java:361)
    at sun.security.krb5.internal.tools.Kinit.<init>(Kinit.java:219)
    at sun.security.krb5.internal.tools.Kinit.main(Kinit.java:113)

Выходные данные также указывают на то, что этот принцип имеет значение -V@MYCOMPANY.COM Что не кажется правильным.

Я все еще новичок в использовании клавиш и API-интерфейса GSS. Я не уверен, является ли это проблемой с моей генерацией таблицы ключей, настройкой spn или чем-то другим в конфигурации моей системы, любая помощь будет очень признательна.

...