Система единого входа перестала работать в нашем приложении Spring. поскольку мы обновились до Java 17 с обновленными библиотеками Spring. Во время аутентификации я получаю следующую ошибку, связанную с тем, что Java 17 отключил RC4.
У меня SSO работает нормально, только если я устанавливаю для параметраallow_weak_crypto значение «true». Я ищу пользовательские настройки, чтобы SSO работал без установки дляallow_weak_crypto значения «true».
Я попробовал ниже, но безуспешно, есть ли у вас какие-либо предложения?
Caused by: sun.security.krb5.KrbException: Encryption type RC4 with HMAC is not supported/enabled
at java.security.jgss/sun.security.krb5.EncryptionKey.findKey(EncryptionKey.java:544) ~[java.security.jgss:na]
at java.security.jgss/sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:273) ~[java.security.jgss:na]
at java.security.jgss/sun.security.krb5.KrbApReq.<init>(KrbApReq.java:149) ~[java.security.jgss:na]
at java.security.jgss/sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:139) ~[java.security.jgss:na]
at java.security.jgss/sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:837) ~[java.security.jgss:na]
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4 rc4 arcfour-hmac rc4-hmac arcfour-hmac-md5 arcfour-hmac-exp rc4-hmac-exp arcfour-hmac-md5-exp
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4 rc4 arcfour-hmac rc4-hmac arcfour-hmac-md5 arcfour-hmac-exp rc4-hmac-exp arcfour-hmac-md5-exp
permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4 rc4 arcfour-hmac rc4-hmac arcfour-hmac-md5 arcfour-hmac-exp rc4-hmac-exp arcfour-hmac-md5-exp




Разрешить RC4 HMAC, сохраняя при этом значениеallow_weak_crypto как false
Не делай этого. Это противоречивое требование, поскольку rc4-hmac буквально означает «слабая криптовалюта».
KrbException: тип шифрования RC4 с HMAC не поддерживается/включен.
Когда вы получаете это сообщение, это означает, что либо у службы, либо у клиента доступны только слабые ключи, но решение состоит не в том, чтобы разрешить использование слабых ключей, а в том, чтобы добавить надежные ключи.
Я бы сначала удалил настройки, связанные с enctype, из krb5.conf. Я не уверен, нужны ли они для Java Kerberos, но они определенно не нужны ни для MIT Kerberos, ни для Heimdal Kerberos.
Затем запустите klist -ket <file> на вкладке ключей вашего сервиса, чтобы проверить, какие у вас есть служебные ключи. Если в списке нет AES — поменяйте пароль сервисной учетной записи, повторно введите keytab, а затем попросите пользователя запустить klist purge (Windows) или kinit -R (Linux), чтобы сбросить все старые билеты, которые у него могут быть.
Затем, если вы используете AD, проверьте учетную запись AD службы, чтобы убедиться, что в дополнительных настройках учетной записи установлены флажки «Включить AES128» и «Включить AES256». (Это соответствует msDS-SupportedEncryptionTypes из 28.) Если были внесены изменения, пользователь снова должен сбросить свои билеты.
Наконец, если это не помогло (или если у вашей службы уже были ключи AES), измените пароль клиента, чтобы KDC сохранял новые ключи для учетной записи пользователя.
(При использовании AD флажки «Включить AES» не нужны для клиентских учетных записей — клиентская система уже сообщает KDC, какие типы шифрования она поддерживает, поэтому AD KDC просто всегда сохраняет все типы ключей.)