Windows와 호환되는 IPP 공유 프린터를 비밀번호로 보호하도록 CUPS 구성

Windows와 호환되는 IPP 공유 프린터를 비밀번호로 보호하도록 CUPS 구성

현재 구성을 사용하면 Windows에 프린터를 설치할 수 있지만 마법사에서 자격 증명을 묻는 메시지가 표시되지 않아 인쇄할 수 없습니다. 하지만URL에 자격 증명 제공( http://some_user:password@serverip:port/printers/myprinter), Windows는 항상 로컬 계정 이름을 사용하며 기본 인증을 시도하지 않는 것으로 보입니다(링크된 게시물에 설명되어 있음).

Denying user "local_windows_user" access to printer "myprinter"...
Print-Job client-error-not-authorized: Not allowed to print.
[Client x] Returning IPP client-error-not-authorized for Print-Job

Windows 클라이언트가 암호를 묻는 메시지를 강제로 표시하지 않도록 구성에 누락된 것이 있습니까? Windows에서 포트를 구성하고 자격 증명을 지정해도 결과는 변경되지 않습니다. 해결 방법으로 인증을 위해 CUPS가 URL만 보도록 할 수 있습니까?

현재 허용된 위치에서 기본 인증을 사용해 보았지만 이로 인해 지금까지 메시지가 표시되지 않고 설치에 실패하게 됩니다.

some_user가 웹 인터페이스를 통해 myprinter를 사용하여 인쇄할 수 있도록 허용합니다. 자격 증명을 묻는 메시지가 표시되면 연결이 https로 업그레이드됩니다. 테스트 DefaultEncryption Never결과는 바뀌지 않았습니다.


cupd.conf

Listen localhost:631
Listen serverip:port

Browsing On
BrowseLocalProtocols dnssd

DefaultAuthType Basic

<Location />
  Order allow,deny 
</Location>
    
# Restrict access to the admin pages...
<Location /admin>
  AuthType Default
  Order allow,deny
  Require user @SYSTEM
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
</Location>

# Restrict access to log files...
<Location /admin/log>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
</Location>

# Set the default printer/job policies...
<Policy default>
  # Job/subscription privacy...
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default

  <Limit Get-Printer-Attributes>
    #AuthType Default
    Order allow, deny
  </Limit>

  <Limit Create-Job Print-Job Print-URI Validate-Job>
    Order deny, allow
    AuthType Basic
  </Limit>

[ommitted]

버전

Server: Fedora 37 Server
Cups Version: cups-2.4.2-5.fc37
Windows Version: Windows 10 Pro 21H2 (tested, not working), Windows 10 Pro 22H2 (tested, not working)

노트

재고 Linux Mint 21.1 Live에서 테스트되었습니다. 모든 프린터는 인쇄 시 자동으로 암호를 감지하고 묻는 메시지를 표시합니다. 서버에서 사용자는 로 로그인합니다 some_user.


기본인증이 필요한 경우Get-Printer-Attributes

Windows에서는 "연결할 수 없습니다..프린터 이름 등을 확인하세요..."라는 일반 오류가 표시됩니다.

컵 로그:

POST /printers/myprinter HTTP/1.1
cupsdSetBusyState: newbusy="Active clients", busy="Active clients"
[Client 6] Read: status=200, state=6
[Client 6] No authentication data provided.
[Client 6] 2.0 Get-Printer-Attributes 6
Get-Printer-Attributes ipp://some_user:password@serverip:port/printers/myprinter
cupsdIsAuthorized: username=""
[Client 6] Returning HTTP not authorized for Get-Printer-Attributes (ipp://some_user:password@serverip:port/printers/myprinter
[Client 6] cupsdSendHeader: code=426, type="text/html", auth_type=1
[Client 6] HTTP_STATE_WAITING Closing for error 32 (Broken pipe)
[Client 6] Closing connection.
cupsdSetBusyState: newbusy="Not busy", busy="Active clients"

브라우저에서 URL에 액세스할 때 "사용자 이름으로 로그인하려고 합니다. 하지만 이 페이지에는 인증이 필요하지 않습니다."라는 경고가 표시됩니다. 계속하면 약 1초 후에 다시 로드되는 리디렉션 페이지로 이동한 다음 자격 증명을 입력하라는 메시지가 표시됩니다. 어쩌면 기본 인증 프롬프트 전의 html 응답이 Windows 충돌의 원인일 수도 있습니다.

기본 인증을 사용하여 일반 웹 서버에 URL을 추가하려는 경우

이 경우 Windows(및 브라우저)는 즉시 비밀번호를 묻는 메시지를 표시합니다.

답변1

http 연결 문제가 해결되었습니다. https가 확실하지 않습니다. 자체 서명된 인증서와 IP 주소의 조합으로 인해 문제가 발생한다고 생각합니다. 신뢰할 수 있는 루트 인증서에 추가하는 것이 가능할 수도 있지만 Windows는 이에 만족하지 않는 것 같습니다. 내가 믿을 수 있다면문서(아마도 구식일 수 있음) 여전히 Internet Explorer에 의존합니다. 그래서 여기서 열렸는데 에러가 없다면 프린터도 연결되어 있어야 합니다.

기본적으로 Require [user or group]및를 사용하면 AuthType BasicCUPS에서 자격 증명을 묻는 메시지가 즉시 표시되지만 CUPS가 연결을 https로 업그레이드하려고 시도하기 때문에 그것만으로는 충분하지 않습니다(메시지를 표시하는 대신 html 페이지 반환).

일반 섹션을 추가하면 DefaultEncryption IfRequested이 동작이 방지되며 Windows에서 프롬프트를 선택합니다.

관련 정보