Code change:
Added text to address assigned issues: URL URL URL
tbd: "Due to the inability to securely attest to the first-partyness of a browser based application, it is NOT RECOMMENDED to use this application in a browser-based application."
Thinking out loud, would the hypothetic "SPA attestation" be possible in principle / make sense at all?
Yes, Chrome has a proposal for the "Web Integrity API", but it has received a lot of pushback: URL Safari already shipped Private Access Tokens which are similar: URL
There was some discussion at OSW about enforcing client auth first, before invoking the native flow to further build trust. It may be a good idea to add additional information, perhaps in the security considerations, about ways in which the server can have confidence that the first party app is a "real" first party app.
Yes, I agree. There are couple of ways the server can determine trust in the mobile app. We shouldn't be prescriptive but maybe putting some options in the security considerations would help make it more clear how to do this. Maybe there is best practice guidance that could be put in a doc like for single-page-apps.
NAME to update First-Party Applications section
in Section 9.1 URL
Add new normative requirement for authorization server to verify that the application is a first party application.
One of the participants in the OSW workshop suggested adding a content type parameter to allow them to specify for example a JSON structure or some other data format to control the native app experience. We have been deliberately avoiding defining a new language or re-inventing HTML, but allowing implementors to return complex content types of their own definition may be worth considering if this is a common enough use case.
Make it more clear in 5.2 that this spec expects the response to always be either the authorization code or an error URL Section 5.2.2 needs to make it clear that the authorization server has to define its own error codes URL Section 5.2.2 should explicitly allow more specific JSON content types

Related discussion:
text: 9.1. <ins> First-party applications are applications that the user recognizes as belonging to the same brand as the authorization server.  For example, a bank publishing their own mobile application. </ins> Because this specification enables a client application to interact directly with the end user, and the application handles sending any information collected from the user to the authorization server, it is expected to be used only for first-party applications when the authorization server also has a high degree of trust of the client. <del> First-party applications are applications that the user recognizes as belonging to the same brand as the authorization server.  For example, a bank publishing their own mobile application. </del> <ins> This specification is not prescriptive on how the Authorization Server establishes it's trust in the first-partyness of the application.  For mobile platforms, most support some mechanism for application attestation that can be used to identify the entity that created/signed/uploaded the app to the app store.  App attestation can be combined with other mechanisms like Dynamic Client Registration RFC7591 to enable strong client authentication in addition to client verification (first-partyness).  The exact steps required are out of scope for this specification.  Note that applications running inside a browser (e.g.  Single Page Apps) context it is much more difficult to verify the first-partyness of the client.  Please see single-page-apps for additional details. </ins> 9.2.