Subject: [IPP] MOPRIA Alliance Print Specification Accounting Support requirement 4.18.2.d is incompatible with Apple AirPrint

From: "Rizzo, Christopher via ipp" <[email-masked]>
Date: Wed, 22 Jan 2020 22:36:59 +0000

All,

If "job-accounting-user-id" and "job-account-id" are added to IPP "printer-mandatory-job-attributes" in an IPP Get-Printer-Attributes response, as specified by MOPRIA Alliance Print Specification 2.1 section 4.18.2.d., the Apple Mac AirPrint driver ceases to print.  In other words, because Apple does not properly support this functionality, and it in fact breaks Mac printing (the print job in Mac OS Mojave is never sent - I have not tested with Catalina though), this MOPRIA IPP requirement is incompatible with AirPrint, and as a result any printer vendor implementing support for this in MOPRIA will not be able to concurrently support AirPrint.  Also, it is my understanding Apple's AirPrint currently does not support job-accounting-user-id and I know of no plan for it to be supported in the future.

I believe there needs to be some agreement across both MOPRIA Alliance and Apple/AirPrint which includes PWG working group to try and address this issue.  The current MOPRIA requirement is a "MAY", which allows vendors to just skip this MOPRIA requirement if they wish to work with both types of clients.  But if in the future there is a desire to make this requirement a "MUST" (for printer vendors whose systems actually require these attributes to be sent in an IPP Print-Job or Create-Job request when accounting is enabled), then this needs to be addressed.

Also not addressed is the fact that some accounting implementations only require job-accounting-user-id as mandatory, as all accounting users in these implementations can have a default job-account-id assigned to all their jobs, which means job-accounting-user-id would be present in printer-mandatory-job-attributes but job-account-id would not.  In this instance, job-account-id could possibly be included in printer-suggested-job-attributes, in the event the user wants to specify an alternate job-account-id other than their default.

Thanks,
Chris

Christopher Rizzo
Xerox Corporation
GDG/Discovery/Advance Technology
26600 SW Parkway Ave.
Wilsonville, OR 97070-9251
Phone: (585) 314-6936
Email: [email-masked]

"The realization came over me with full force that a good part of the remainder of my life was going to be spent in finding errors in my own programs."
-Maurice Wilkes, Memoirs of a Computer Pioneer
_______________________________________________
ipp mailing list
[email-masked]
https://www.pwg.org/mailman/listinfo/ipp

---

From: Michael Sweet via ipp <[email-masked]>
Date: Thu, 23 Jan 2020 08:47:00 -0500

Chris,

As many of the members on this list do not have access to the MOPRIA Alliance Print Specification, it is a bit difficult to discuss any requirements that it has, the use cases that are being addressed, etc.  Moreover, this mailing list is not an appropriate forum for filing bug reports against or making claims about any other member's IPP implementation or plans.  The PWG defines voluntary, interoperable standards for printing, and we have no process for enforcing compliance with any of those standards.  I would prefer that we keep any discussion focused on defining an interoperable standard for accounting with well-defined use cases and requirements that all vendors can agree to follow and support.

WRT the attributes in question, both job-account-id and job-accounting-user-id are now RECOMMENDED to support by IPP Clients in the recently published PWG 5100.7-2019: IPP Job Extensions v2.0.  Additional accounting- and transaction-related attributes are defined in PWG 5100.16-2013: IPP Transaction-Based Printing Extensions (currently being reviewed for an errata update), and of course we have OAuth Authorization (PWG 5100.18-2015: IPP Shared Infrastructure Extensions and PWG 5199.10-2019: IPP Authentication Methods) that will likely be part of future corporate/managed printing solutions. Finally, we have been actively revising 5100.11-2011 (Enterprise Printing Extensions, formerly JPS2) to include discussion of Release Printing and my own "Job Accounting with IPP" best practice document which is attempting to document and make recommendations for the wide variety of accounting solutions.  As these most recent documents have shown, accounting support is not just a matter of adding t
 ext fields for two RECOMMENDED Job Template attributes.

I see four specific items below that are appropriate topics of discussion in the IPP workgroup as we continue to develop the Job Accounting best practice document:

1. What are the use cases that need job-accounting-user-id but not job-account-id?

2. Do we need a way for a Printer to report that it would like the Client to show UI for and send certain Job Template attributes, above and beyond the current "printer-requested-job-attributes"?

3. What additional Client UI recommendations do we want to add to the Job Accounting best practice document?  For example, what is the recommended UI for "job-account-id"?

4. How can a Printer best support a (legacy/not updated) Client whose Job Creation request is missing required or requested information?

Thanks!

> On Jan 22, 2020, at 5:36 PM, Rizzo, Christopher via ipp <[email-masked]> wrote:
> 
> All,
>  

________________________
Michael Sweet

---

From: "Rizzo, Christopher via ipp" <[email-masked]>
Date: Wed, 29 Jan 2020 08:11:46 +0000

Mike,

This email is an attempt to answer the questions you posed in your previous email.  In trying to get my head around the issue, I noticed I did not address any of your questions.  The meeting time for the PWG has been typically a difficult time for me to attend due to other commitments, so my participation has not been as stellar as I would like.  The same is going to be true for this week as I have an important doctor's appt. this Thursday.  Apologies for the length of this email...  Hope I don't put everyone to sleep.

[crizzo] I can only speak from my experience of course, so I'm sure I'm going to miss use cases.  But here goes:

SYSTEM-A. An accounting system that REQUIRES BOTH a job-accounting-user-id and a job-account-id in a print job submission in order for the job to print.  If both are not specified the job is rejected.  job-accounting-user-id is more typically associated with a specific user, so typically a user would only have one assigned to them (although that may not always be the case).  job-account-id could be associated with a user's department, so in that case the user would know his department's job-account-id and only use that.  Another scenario is a user may be working on behalf of one or more clients, and have a list of job-account-id's, one for each client they support.  At any one time the user is working on behalf of a specific client, and therefore uses the appropriate job-account-id so that the correct client gets billed, as opposed to a user's department.

SYSTEM-B. An accounting system that ONLY REQUIRES a job-accounting-user-id to be specified, because each user has a default job-account-id associated with their account, so when a job is submitted, and only job-accounting-user-id is included, that user's default job-account-id is billed for the job.  However, each user might have multiple job-account-id's available to them, and therefore job-account-id would be an optional value that could be sent in the job submission.

SYSTEM-C. I do not have any experience with a system that only requires/support job-account-id on its own, not to say they don't exist though...

[crizzo]                 I am having trouble finding the specs where printer-mandatory-job-attributes and printer-requested-job-attributes are defined.  PWG 5100.7 contains job-mandatory-attributes Job Attribute, but does not mention printer-mandatory-job-attributes or printer-requested-job-attributes Printer Description attributes that I can find.    I know they are in a spec somewhere, just can't find it right now.  I suggest the following Printer Description matrix for the above accounting systems:

                SYSTEM-A:  printer-mandatory-job-attributes = job-accounting-user-id, job-account-id;  printer-requested-job-attributes empty
                SYSTEM-B:  printer-mandatory-job-attributes = job-accounting-user-id;  printer-requested-job-attributes = job-account-id

But a more general solutions suggests a printer should simply include job-accounting-user-id and job-account-id in printer-mandatory-job-attributes when they are required for a job to print, and if they are optional for a job, move the optional ones to printer-requested-job-attributes.

[crizzo]  (Going forward) Supporting implementations:  As I went thru this it was getting pretty robust, so I created a spreadsheet (attached) to try to capture my ideas.  Hope it is understandable and not too complex (implementation wise).  I think the spreadsheet could possibly cover all conceivable implementations though.

[crizzo]                 Printers that support the new accounting requirements MAY wish to implement accounting exceptions configurable at the printer (for legacy client support it would absolutely be highly recommended, or maybe go so far as making this a MUST, so that legacy clients aren't totally locked out when accounting is enabled).  Jobs received over IPP for example, can be charged to a generic IPP job-accounting-user-id and job-account-id.  Not ideal for locking down accounting on the printer, but if a customer wants to use legacy clients with a supporting printer, this may be the only way.

Christopher Rizzo
Xerox Corporation

From: Christopher Rizzo <[email-masked]>
Date: Thursday, January 23, 2020 at 7:46 AM
To: Michael Sweet <[email-masked]>
Subject: Re: [IPP] MOPRIA Alliance Print Specification Accounting Support requirement 4.18.2.d is incompatible with Apple AirPrint

Mike,

I apologize if there was any political incorrectness in my email.  I was only trying to convey to all affected parties that there is an interoperability problem that needed to be raised.  I believe I have filed bug reports to Apple's database with regard to the accounting problem, although it was a while ago.  It was not my intention to file a bug report, but only to inform other vendors that there could be a problem with their implementation if they go ahead and implement the MOPRIA requirement.  I know it is not the responsibility of the PWG to know what the MOPRIA Alliance is doing, but I think it is the responsibility of the MOPRIA Alliance to know what PWG is doing, and also what AirPrint is doing, so they do not define requirements that conflict, since both rely on the same protocols.

Thanks,
Chris

Christopher Rizzo
Xerox Corporation

From: Michael Sweet <[email-masked]>
Date: Thursday, January 23, 2020 at 5:47 AM
To: Christopher Rizzo <[email-masked]>
Cc: Mopria Technical <[email-masked]>, PWG Workgroup <[email-masked]>, "Roscoe, Gary" <[email-masked]>, Doug Tallinger <[email-masked]>, Dianne Colelli <[email-masked]>, Michael Trent <[email-masked]>
Subject: Re: [IPP] MOPRIA Alliance Print Specification Accounting Support requirement 4.18.2.d is incompatible with Apple AirPrint

Chris,

WRT the attributes in question, both job-account-id and job-accounting-user-id are now RECOMMENDED to support by IPP Clients in the recently published PWG 5100.7-2019: IPP Job Extensions v2.0.  Additional accounting- and transaction-related attributes are defined in PWG 5100.16-2013: IPP Transaction-Based Printing Extensions (currently being reviewed for an errata update), and of course we have OAuth Authorization (PWG 5100.18-2015: IPP Shared Infrastructure Extensions and PWG 5199.10-2019: IPP Authentication Methods) that will likely be part of future corporate/managed printing solutions. Finally, we have been actively revising 5100.11-2011 (Enterprise Printing Extensions, formerly JPS2) to include discussion of Release Printing and my own "Job Accounting with IPP" best practice document which is attempting to document and make recommendations for the wide variety of accounting solutions.  As these most recent documents have shown, accounting support is not just a matter of adding text fields for two RECOMMENDED Job Template attributes.

Thanks!

On Jan 22, 2020, at 5:36 PM, Rizzo, Christopher via ipp <[email-masked]<mailto:[email-masked]>> wrote:
All,

Thanks,
Chris

Christopher Rizzo
Xerox Corporation
GDG/Discovery/Advance Technology
26600 SW Parkway Ave.
Wilsonville, OR 97070-9251
Phone: (585) 314-6936
Email: [email-masked]<mailto:[email-masked]>

[email-masked]<mailto:[email-masked]>

________________________
Michael Sweet

---

From: Michael Sweet via ipp <[email-masked]>
Date: Thu, 30 Jan 2020 10:50:16 -0500

Chris,

Responses inline below...

> On Jan 29, 2020, at 3:11 AM, Rizzo, Christopher <[email-masked]> wrote:
> 
> Mike,
>  
>  ...

I wondering if we can provide a little more specific example for these - like a lawyer's office where associates have both a job-accounting-user-id that identifies the partner they are doing work for (?) and a job-account-id that identifies the client they are doing work for?  We need to talk about why an unauthenticated value is useful/acceptable here as opposed to simply using the "most authenticated user identity" for job-accounting-user-id...

I only stick on this point because there are obvious business and legal issues with accounting systems that accept unauthenticated/unvalidated information - it's not enough to say you are John Smith working on contract/account number 123456.  At some point you have to define a level of trust, which can be improved through authentication and validation, e.g. authenticate John Smith using a shared secret (password, whatever) and validate that John Smith is allowed to charge against account number 123456.

Remember we are defining the Best Practices for job accounting systems in this document, which may not match existing accounting systems precisely but definitely needs to address the use cases and requirements of existing accounting systems.

> [crizzo]                 I am having trouble finding the specs where printer-mandatory-job-attributes and printer-requested-job-attributes are defined.  PWG 5100.7 contains job-mandatory-attributes Job Attribute, but does not mention printer-mandatory-job-attributes or printer-requested-job-attributes Printer Description attributes that I can find.    I know they are in a spec somewhere, just can't find it right now.

Currently printer-requested-job-attributes is defined in the Job Accounting document, although the plan is to move it to another spec (EPX has been suggested, TRANS is another possibility and is just getting a quick errata update and might be a better fit?)

>  I suggest the following Printer Description matrix for the above accounting systems:
>  

I think that's the guidance we should be giving for any of the attributes...
 
> [crizzo]  (Going forward) Supporting implementations:  As I went thru this it was getting pretty robust, so I created a spreadsheet (attached) to try to capture my ideas.  Hope it is understandable…

Well, the focus of the spreadsheet is clearly on job-account-id and job-accounting-user-id, but we also have document-format-details and many other attributes that were identified previously to consider.
 
> [crizzo]                 Printers that support the new accounting requirements MAY wish to implement accounting exceptions configurable at the printer (for legacy client support it would absolutely…

Agreed, and we probably need to talk about what the specific recommendations should be...

(I'm adding slides to the F2F deck now, we can expand as needed...)

________________________
Michael Sweet

---

From: "Rizzo, Christopher via ipp" <[email-masked]>
Date: Thu, 30 Jan 2020 16:56:52 +0000

Mike,

Maybe our System Engineering (Mirelsa) can provide more customer usage information on accounting security and how customers use accounting than I, as I have no direct contact with customer usage/paradigm.

I believe our perception of what an account id is may be different.   When you refer to authentication, a user has a username and password.  They don't share their password, it is used for authenticating themselves (2FA aside for now).

My perception of job-accounting-user-id is similar to a password, it is not something that is public information.  The difference however may be that that value may be assigned by an accounting system administrator, and if it is not modifiable by the user, then more than one person can know their user-id, so there is a security hole there.

Similarly, I'm not thinking of job-account-id as being something that is public information about the customer/client that appears on invoices.  It is only provided to those users that need to bill the account.  Again however, multiple people may have access to that value if more than one person is working an account.   But the requirement that both job-accounting-user-id and job-account-id be required to submit/bill jobs identifies who submitted the job and who is/should be being charged.  But I agree with you there is much less security than what is provided via an authentication that requires a private password and possibly even 2FA.

If you add on top of this the possibility that, for example, I logged in (authenticated to) my Mac, and when I submit a job, my Mac uses my authenticated user name for my job-accounting-user-id value (and maybe won't allow me to change it).   An SA would then configure the accounting system - add my authenticated username as a valid job-accounting-user-id.  That would tie me to any job submitted thru the accounting system.  But still, the accounting system admin has to know my authenticated username and therefore my job-accounting-user-id in order to configure accounting, AND usernames are specifically more public than passwords, so there is obviously an issue there...

I guess it all comes down to what type of security customers who use accounting are expecting from it.  It is optionally enabled by customers who use it, but I can't speak to what they expect from it security wise, and what advances may existing in accounting systems for security purposes.

Maybe Mirelsa can...

Thanks,
Chris

Christopher Rizzo
Xerox Corporation

From: Michael Sweet <[email-masked]>
Date: Thursday, January 30, 2020 at 7:50 AM
To: Christopher Rizzo <[email-masked]>
Cc: PWG Workgroup <[email-masked]>
Subject: Re: [IPP] MOPRIA Alliance Print Specification Accounting Support requirement 4.18.2.d is incompatible with Apple AirPrint

Chris,

On Jan 29, 2020, at 3:11 AM, Rizzo, Christopher <[email-masked]<mailto:[email-masked]>> wrote:
Mike,

________________________
Michael Sweet

---

From: Michael Sweet via ipp <[email-masked]>
Date: Thu, 30 Jan 2020 13:32:04 -0500

Chris,

FWIW, since "job-accounting-user-id" is a Job Template attribute is isn't (from an IPP perspective) a security value - all attributes of that nature MUST be supplied as operation attributes and kept separate from the Job attributes that are returned by the Get-Job-Attributes operation (and so private...)

Anyways, I definitely want to have this discussion because "job-accounting-user-id" has long been a point of contention WRT accounting, and it is important to resolve things so we have a common workable solution going forward...

________________________
Michael Sweet