ฉันกำลังพยายามตั้งค่าไคลเอนต์เซิร์ฟเวอร์ด้วยเว็บเซอร์ที่ผู้ใช้ของ Active Directory ควรจะสามารถเข้าสู่ระบบด้วย SSO ได้

ฉันใช้ SPNEGO กับ Kerberos บนเซิร์ฟเวอร์ Ubuntu 14.04 และพร็อกซี nginx ไปยัง Naviserver สำหรับบริการเว็บเพื่อทำเช่นนั้นและรับรหัสข้อผิดพลาด: majorStatus: 851968 , minorStatus: 2529639056 (ผิดหลักในคำขอ)

/etc/krb5.conf

    [libdefaults]
        default_realm = TEST.LOCAL
        default_keytab_name = /etc/staging.keytab
        rdns = false
        ignore_acceptor_hostname = true
        dns_lookup_realm = false
        dns_lookup_kdc = false
        default_tkt_enctypes = des-cbc-md5 des-cbc-crc arcfour-hmac-md5 rc4-hmac
        default_tgs_enctypes = des-cbc-md5 des-cbc-crc arcfour-hmac-md5 rc4-hmac
        permitted_enctypes = des-cbc-md5 des-cbc-crc arcfour-hmac-md5 rc4-hmac
        allow_weak_crypto = true
        kdc_timesync = 1
        clockskew = 100
        ccache_type = 4
        forwardable = true
        proxiable = true
        ticket_lifetime = 25h
        renew_lifetime = 7d
        kdc_req_checksum_type = 4
[realms]
        TEST.LOCAL = {
                kdc = something.test.local
                admin_server = something.test.local
                default_domain = TEST.LOCAL
        }
[domain_realm]
        live.test.smth = TEST.LOCAL
        .live.test.smth = TEST.LOCAL
        staging.smth.else = TEST.LOCAL
        .staging.smth.else = TEST.LOCAL

ใน /etc/hosts ไม่ใช่ 127.0.0.1

ActiveDirIP    test.local
myIP    staging.smth.else

ฉันมีไฟล์ keytab ที่สร้างจาก Active Directory Admins ด้วย

ktpass /princ HTTP/[email protected] /mapuser [email protected] /pass *** /out staging.keytab /crypto DES-CBC-CRC /kvno 0 /ptype KRB5_NT_PRINCIPAL

และมันใช้งานได้เมื่อฉันเรียก kinit:

~$ kinit -S http/[email protected] [email protected]
~$ klist
Ticket cache: FILE:/tmp/krb5cc_1002
Default principal: [email protected]

Valid starting       Expires              Service principal
2016-02-12 13:31:44  2016-02-12 23:31:44  http/[email protected]
    renew until 2016-02-13 13:31:41

~$ kinit http/[email protected]
~$ klist
Ticket cache: FILE:/tmp/krb5cc_1002
Default principal: http/[email protected]

Valid starting       Expires              Service principal
2016-02-12 13:30:58  2016-02-12 23:30:58  krbtgt/[email protected]
    renew until 2016-02-13 13:30:49

~$ kinit [email protected]
~$ klist
Ticket cache: FILE:/tmp/krb5cc_1002
Default principal: [email protected]

Valid starting       Expires              Service principal
2016-02-12 13:32:13  2016-02-12 23:32:13  krbtgt/[email protected]
    renew until 2016-02-13 13:32:09

kvno คือ 3 แต่ผู้ดูแลระบบบอกฉันว่า kvno ใน Windows ไม่เกี่ยวข้อง

kvno [email protected]
[email protected] kvno = 3

ในการกำหนดค่า NaviServer ถูกกำหนด:

ns_section ns/server/${server}/module/knspnego
ns_param Krb5KeyTabFile "/etc/staging.keytab"
ns_param Krb5ServiceName "[email protected]"
ns_param AuthType "SPNEGO"

ชื่อโฮสต์

hostname -f
staging.smth.else

คุณมีความคิดใด ๆ ที่ปัญหาคืออะไร?

answer

ฉันพบวิธีแก้ปัญหา ในไฟล์ keytab นั้น /crypto ผิดสำหรับการตั้งค่าของเรา มันใช้งานได้กับ /crypto ALL

ฉันมีปัญหาที่คล้ายกัน แทนที่ประเภทการเข้ารหัสrc4-hmacด้วยสิ่งเหล่านี้:

arcfour-hmac
aes128-cts
aes256-cts
des-cbc-crc
des-cbc-md5

จากนั้นเริ่มบริการของฉันใหม่ซึ่งแก้ไขได้