I dont see a big issue with a faked software_id. As i said it was a minimal proposal with the door open to stronger assertions.
Rogue clients pretending to be something they are not is actually more evidence of a problem. In draft 10 you cant even do that. Phil On 2013-05-22, at 15:15, John Bradley <ve7...@ve7jtb.com> wrote: > At the moment for Mobile devices and other native apps all we have to > reliably identify the app is the redirect_uri. > > The client_id is trivially faked in native apps. > > Yes in a well groomed enterprise trusting a self asserted software identifier > is nice but probably doesn't scale to the real world. > > I have had discussions with MDM venders about how you might be able to tie > access tokens to a instance of software on a device and determine if that > software is allowed to be run by that user on that device. > These are all much more complicated discussions than just sticking another > registration parameter on. > > I don't think this should block the basic dynamic registration spec. App > lifecycle needs a full spec, and additional registration parameters can be > added later if required. > > I am not insensitive to the problem. > > John B. > On 2013-05-22, at 6:00 PM, prateek mishra <prateek.mis...@oracle.com> wrote: > >> Well, I have to say that if anything seems poorly thought out, it would be a >> design with the following characteristics. >> >> [quote] >> We already have a “software_id” field and it’s named “redirect_uris” >> [\quote] >> >> This seems to violate the most basic principles of software design - >> overloading a field with meaning distinct from its primary purpose!! >> >> Phil has raised some substantive questions regarding client meta-data and >> the registration process. This information (software_id) is >> essential for identifying and disabling a class of clients that may have >> been found to have some security flaws, for example. >> This is a practical deployment issue that also impacts the security >> characteristics of OAuth. It should be taken into account in the client >> registration process. >> >> I hope we will take the time to discuss this issue carefully and not rush >> to finalize a specification which has NOT received much review >> from the OAuth community. >> >> - prateek >> >> >> >>> +1 >>> >>> We already have a “software_id” field and it’s named “redirect_uris”. >>> >>> This doesn’t seem well thought-out. We shouldn’t try to jam it into the >>> spec at the last minute. >>> >>> The good news is that since the registration spec allows for extensions, >>> and the proposed fields are optional, these could be added later as a >>> non-breaking change by another spec if the working group eventually decides >>> to pursue a route like the one proposed below. We don’t have to do it now >>> for this to eventually come into being after deliberate consideration of a >>> complete specification including these features by the working group. >>> >>> >>> -- Mike >>> >>> From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of >>> John Bradley >>> Sent: Wednesday, May 22, 2013 2:21 PM >>> To: Phil Hunt >>> Cc: oauth@ietf.org WG >>> Subject: Re: [OAUTH-WG] Proposed resolution - Dynamic Reg - Fix to >>> client_id definition issue (was: Client Instances) >>> >>> Phil, >>> >>> As I pointed out in the other thread, redirect_uri is the thing that ties >>> together the clients as that is the place the responses need to go to so is >>> hard to fake. >>> >>> All instances of a particular client application will share the same >>> redirect_uri across all instances. >>> >>> Adding a bunch of self asserted informational fields to the base spec is >>> not really helping. In a enterprise situation where all the apps play nice >>> it might be helpfull but the reality is that you probably allready have a >>> MDM that lets you manage app versions. >>> >>> John >>> >>> On 2013-05-22, at 3:59 PM, Phil Hunt <phil.h...@oracle.com> wrote: >>> >>> >>> I had a conversation with Justin yesterday to try to come to a resolution >>> regarding my concerns about client instances and being able to associate >>> client instances that are issued for the same client software. I think we >>> made some progress. >>> >>> Background: >>> In RFC6749, public clients, had a common client_id. Many interpreted >>> client_id as refering to the client application software (e.g. the iPhone >>> Facebook app). This is probably due to the types of OAuth2 implementations >>> that existed at the time, where there was a single SP instance. Others >>> have interpreted that client_id does not refer to client >>> applications but rather ideally should point to instances of software. To >>> me this seems like equating a client_id to being a user-id -- IOW the key >>> part of a credential rather than a client identifier. >>> >>> The new draft proposes that each instance be identified separately. However >>> it does so without keeping track of client software that is the same. >>> >>> Never-the-less, I think both interpretations can be accommodated. >>> >>> Finally, in single instance services (like Facebook, Twitter, etc), there >>> was a natural registration and approval cycle bound into the client_id >>> issuance process. The developer was able to talk to the single service >>> provider and obtain a client_id for all deployments. It wasn't stated, but >>> the client_id registration sites served a useful way to do application >>> approvals. This is a difficult problem to solve when there are multiple >>> instance of Resource API deployed in multiple locations. The developer >>> can't contact them all. Further, because the current draft loses knowledge >>> of how to recognize that two instances of clients share the same software, >>> there's no ability to have an approval process. Each instance is >>> essentially anonymous, and thus approval processes would not be possible. >>> Though it does not require it, this proposal makes it possible for service >>> providers to recognize new software and to have approval process. >>> >>> Proposal: >>> What I have worked out with Justin (and he may not yet fully agree with >>> everything) is a proposal that solves the problem in an optional way that >>> will not break existing clients. >>> >>> I also propose that optional version numbers also be supported. This is >>> useful to service providers who need to know which client_ids are affected >>> when certain software clients and/or versions are deprecated. The >>> re-introduction of the renamed software_id further >>> enables "local" registration to occur. The first time a client tries to >>> register, a service provider could for example, choose to hold the >>> registration to obtain administrative approval. >>> >>> The solution here is not intended to provide software "authentication" or >>> software verification. The solution simply allows service providers to make >>> pragmatic decisions about sets of clients that typically work the same way >>> in a change managed environment. >>> >>> Question: What happens if the server does not support these new parameters >>> and the client provides them? The current draft already covers this in >>> Section 3. Specifically: >>> The Client Registration Endpoint MUST ignore all parameters it does not >>> understand. >>> >>> Below are 3 options for the group to consider. My recommendation is for >>> option 1. My concern is option 2 will lead to complexity because clients >>> and service providers will attempt to encode versions and software >>> identifiers into one field. I would rather keep this to simple UUIDs for >>> most cases. >>> >>> Option 1 (2 parameters): >>> >>> software_id >>> This value MAY be required by registration endpoints. The value MAY be a >>> unique identifier (UUID) self-assigned by a the client application >>> developer, or it MAY be an assertion. The value SHOULD be the same across >>> all instances of a client on an application platform. For >>> example, software used in a mobile phone should be considered as >>> different from a web server implementation though it may share the same >>> code. The identifier SHOULD NOT change between software updates. While a >>> client application MAY be issued multiple client_id's and client >>> credentials over its deployment lifecycle, the software_id SHOULD NOT >>> change. >>> >>> Signed assertions MAY be used as software identifiers to allow different >>> dynamic registration end-points to recognize approval from a common issuer >>> (for example in cases where the resource API released by a single publisher >>> but deployed in many different domains). The decision to use assertions and >>> the method by which developers know how to obtain assertions is out of >>> scope for this specification. >>> >>> [editorial note: some current deployments are using temporary client >>> credential assertions for this purpose. I propose to standardize this in >>> this field since an assertion would server the same purpose as a UUID only >>> providing third party signing and other claims. I am concerned that passing >>> a client assertion for this purpose creates complexity in client >>> authentication processing - though obviously Justin has it working] >>> >>> software_version >>> RECOMMENDED. A version indicates a client developer chosen version number. >>> The identifier SHOULD BE the same across all copies of client software. The >>> version number SHOULD change between different >>> client updates. The intention is that Service Providers MAY perform >>> equality matching with software_id to sub-select groups of clients of a >>> particular software version. >>> >>> Option 2 (single parameter): >>> >>> software_id >>> This value MAY be required by registration endpoints. The value MAY be a >>> unique identifier (UUID) self-assigned by a the client application >>> developer, or it MAY be an assertion. The value SHOULD be the same across >>> all instances of a client on an application platform. For example, software >>> used in a mobile phone should be considered as different from a web server >>> implementation though it may share the same code. The identifier SHOULD >>> change when the client software has changed such as with a version update >>> or a platform change. >>> >>> Signed assertions MAY be used as software identifiers to allow different >>> dynamic registration end-points to recognize approval from a common issuer >>> (for example in cases where the resource API released by a single publisher >>> but deployed in many different domains). The decision to use assertions and >>> the method by which developers know how to obtain assertions is out of >>> scope for this specification. >>> >>> [note: same editorial note as option 1] >>> >>> Option 3 (no change): >>> >>> In this option, no changes to the draft are made. >>> >>> Personal comment: It has been proposed by several on the list that another >>> extension draft be written for these features as an extension to the >>> dynamic registration draft. In my opinion, such a draft would be very small >>> in size without clear reason for separation. My feeling is >>> that some technical justification for keeping these features separated >>> will likely be needed. >>> >>> Phil >>> >>> @independentid >>> www.independentid.com >>> phil.h...@oracle.com >>> >>> >>> >>> >>> >>> _______________________________________________ >>> OAuth mailing list >>> OAuth@ietf.org >>> https://www.ietf.org/mailman/listinfo/oauth >>> >>> >>> >>> _______________________________________________ >>> OAuth mailing list >>> OAuth@ietf.org >>> https://www.ietf.org/mailman/listinfo/oauth >
_______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth