Eu tenho lutado para Kerberize certos serviços dentro do nosso domínio, um dos quais é o CUPS. A configuração é a seguinte: um servidor de impressão central se conecta a cada impressora individual ao redor do domínio e as compartilha, e cada cliente se conecta a determinadas impressoras nesse servidor. Portanto, o servidor e todos os clientes executam um spooler do CUPS. A autenticação é necessária no servidor de impressão por razões óbvias - o uso da autenticação Básica funciona (com uma caixa de diálogo nome de usuário / senha aparecendo em um cliente tentando imprimir), mas a autenticação Negotiate não.
O servidor de impressão possui um keytab de serviço com o nome de serviço 'host', e os clientes e o servidor possuem entradas DNS e DNS reversas adequadas para o servidor de impressão e o KDC. Conseguir um ticket para um diretor funciona nos clientes. Mas quando tento imprimir, uma caixa de diálogo com o texto 'negociar' aparece com uma caixa de texto ao lado. Não importa o que é digitado na caixa de diálogo, continua a aparecer.
Curiosamente, usar o client.conf para apontar o cliente diretamente para o spooler do servidor de impressão funciona com a autenticação Negotiate - a obtenção de um ticket de serviço funciona e a autenticação acontece sem problemas. Mas isso não é o ideal, pois todos os clientes vêem todas as impressoras - salas diferentes querem ver suas impressoras de sala específicas.
Como a autenticação Negotiate deve funcionar? No momento não tenho absolutamente nenhuma idéia para onde ir. O servidor está executando o Ubuntu 12.04 LTS (totalmente atualizado) e os clientes também estão usando o Ubuntu 12.04 LTS (não totalmente atualizado). Ambos os clientes e o servidor executam o CUPS 1.5.3. O KDC é um servidor Samba4, com o servidor de impressão e os clientes configurados corretamente para o Kerberos. A configuração do cliente é apenas a versão padrão do Ubuntu. O servidor atual cupsd.conf é o seguinte:
LogLevel warn
MaxLogSize 0
SystemGroup lpadmin
# Allow remote access
Port 631
HostNameLookups on
Listen /var/run/cups/cups.sock
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS dnssd
BrowseAddress @LOCAL
DefaultAuthType Negotiate
DefaultPolicy authenticated
WebInterface Yes
<Location />
# Allow remote access...
Order allow,deny
Allow all
</Location>
<Location /admin>
</Location>
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
</Location>
<Policy default>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Default
Require valid-user
Order allow,deny
Allow from 172.30.*.*
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
<Policy authenticated>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Default
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>