PCKE prevents a bad app from using the code when there's a collision in the custom scheme used for the redirect URI. However the same app could immediately issue a new authorization request with it's own PCKE parameters and (mostly) transparently get back a code that it can use. Having some user interaction via the browser helps mitigate that.
6.4 says that "tokens SHOULD NOT be issued to such [non-confidential] clients without user consent or interaction" so it's not strictly required. Also, FWIW from http://tools.ietf.org/html/rfc2119 SHOULD NOT and NOT RECOMMENDED are effectively synonymous On Fri, Jul 24, 2015 at 9:44 AM, Nat Sakimura <sakim...@gmail.com> wrote: > Prompting is not necessarily is a good thing. > It is very context specific, so please do not make it required. > > Nat > > 2015-07-24 16:38 GMT+09:00 John Bradley <ve7...@ve7jtb.com>: > >> Hi Antonio, >> >> Thanks for the feedback. >> >> I agree that for non confidential clients, the user needs to be prompted. >> It might be fair to just confirm the grants rather than resetting them >> from defaults. >> >> I know some people are doing that, but I suspect that not everyone is. >> >> Good stuff. >> >> People should chime in with other things we need to consider. >> >> Thanks >> John B. >> >> On Jul 24, 2015, at 9:00 AM, Antonio Sanso <asa...@adobe.com> wrote: >> >> hi, >> >> nice to see some work on this topic by the way! >> >> Couple of comments below inline >> >> On Jul 24, 2015, at 7:51 AM, John Bradley <ve7...@ve7jtb.com> wrote: >> >> Thanks for the review Erik, >> >> We will go through it in detail and get back to you. >> >> I am working with a couple of governments on how a eID app could use the >> self issued profile of OpenID Connect to issue tokens. >> >> There are also other out of band authentication apps that people use >> that need to be considered. >> >> I think that the callback / redirect_uri can work if a custom scheme URI >> or a app claimed https: URI is used. >> >> >> Is there any example of “popular” custom scheme. One I have seen is >> urn:ietf:wg:oauth:2.0:oob >> Another common redirect_uri for native app I have seen is >> http://localhost >> >> One more comment. I strongly suggest for mobile app to have a really >> strict consent screen policy. >> Aka the authorization server MUST show the consent screen at every usage >> and not remember the fact that the app has been already authorized. >> >> Just my 2 cents :) >> >> regards >> >> antonio >> >> >> I agree that sniffing the URI in a web view creates a very confusing user >> experience at the moment. It works better on Android than iOS 8 but is not >> smooth in many cases. >> >> I personally use a out of band mobile authenticator for my enterprise >> login that has exactly that problem, and requires me to manually switch >> back to the calling app. >> >> Regards >> John B. >> >> >> >> >> On Jul 24, 2015, at 12:59 AM, Erik Wahlström <e...@wahlstromstekniska.se> >> wrote: >> >> Hi, >> >> Thanks for a great document! I volunteered to review >> draft-wdenniss-oauth-native-apps-00 at the #IETF93 meeting so here we go: >> >> In national mobile eID deployments an app is issued by gov or other >> organisation in a country. The app acts as the users authentication method >> and it works with an IDP, the IDP can be anywhere if its an PKI token or at >> the place that issued the credential if it’s something else. When an SP >> start developing an native app for there services and want’s to use the >> national eID solution in combination with OAuth we might run into trouble >> here. >> >> The flow is like follows for a service provider called FooBar: >> >> FooBar’s app starts browser-view. FooBar’s SAML service provider >> functionality redirects the user to an national SAML IDP. The IDP prompts >> user for a username and then starts an mobile eID token on the same phone. >> Users is asked if they want’s to authenticate to FooBar and enters PIN. >> User are then redirected back with an assertion. The FooBar's service >> provider verifies the assertion and mint’s OAuth2 token(s) and redirects >> the user back to the app with the help of the redirect URL. >> >> So the phone first displays an app, then foobar.com <http://example.com/> in >> browser-view, then idp.com <http://nationalidp.com/> in *browser-view*, >> then mobile eID token, then idp.com <http://nationalidp.com/> in the *system >> browser* and back to foobar.com <http://example.com/> and the app that >> the user wanted to use. >> >> The problem with browser-views is that the mobile eID token will start >> idp.com when user has authenticated and then the user is not back in the >> apps browser-view, but in system browser instead. The system browser is >> sharing the session with the browser-view and redirect the user to the >> native app. The user experience will be a bit strange then because there >> the correct page is not loaded and the browser-view should be closed and >> the app should start parsing out the authorization code instead. >> >> So I think draft should mention something about this scenario and that >> app developers should handle this scenario in the app. The grant did not >> really come back from the browser-view as expected but from the system >> browser instead. >> >> ————————— >> >> With the above in mind. Maybe even some example code would be nice to >> have in the non normative section "Appendix A. Operating System Specific >> Implementation Details”. Especially how to handle call backs. >> >> ————————— >> >> Another eID related issue is the pricing model for authentications in >> that market segment. It’s really common by the eID credential issuing >> organisations to charge a service providers usage of a credential per tick >> (that is by OSCP call). The system is based on a per tick pricing model and >> there are regulations for how long the sessions can live. That means that >> its not possible to authenticate with a token once and then create a >> refresh token and the user will ever see the authentication flow again. It >> kinda messes up the usability of mobile apps a lot but end users have come >> to term with it. They have not however came to term to always require >> consents every time they use the app. That drives end user crazy. The >> usability would be much better if the payment model also accepted a refresh >> token as a tick instead of just an OSCP call, but we are not there yet. >> >> Anyway, that’s the backstory. The section "6.4. Always Prompting for >> User Interaction” is a bit harsh with a SHOULD NOT. I would rather change >> it to a NOT RECOMMENDED. >> >> ————————— >> >> Two additional things that strengthen the case for using the browser-view >> also come to mind when reading the draft. The first is the fact that >> multiple tabs is started in some browser when going through multiple >> authentication attempts. That clutters the system so I really like the new >> browser-views. >> >> The second is that there are additionally nice things in browser-view >> that do not exist in the web-view. The localStorage is also preserved and >> it can include important information to make authentication methods more >> secure. >> >> ———————— >> >> "Authorization servers SHOULD consider taking steps to detect and >> >> block logins via embedded user-agents that are not their own, where >> >> possible."" >> >> >> Sounds good, but that also sounds very hard when it comes to public >> clients. >> >> ————————— >> >> And some nits: >> >> >> "OAuth flows between a native app and the system browser (or another >> >> external user-agent) are more secure, and take advantage of the >> >> shared authentication state." >> >> >> Not really clear what shared authentication state that is in that >> sentence. >> >> >> "When the authentication server completes the request, it redirects to >> >> the client's redirection URI like it would any redirect URI" >> >> >> s/authentication/authorization >> >> >> / Erik >> >> >> >> >> On Thu, Jul 23, 2015 at 6:22 PM, <oauth-requ...@ietf.org> wrote: >>> >>> >>> John Bradley and I introduced a new draft at IETF93 yesterday: >>> https://tools.ietf.org/html/draft-wdenniss-oauth-native-apps-00 >>> >>> >>> Goal is to provide best practices for native apps using the RFC6749 >>> authorization >>> endpoint, expanding on RFC6749 Section 9. Specifically, it recommends >>> using an external user-agent (such as the system browser) for this task >>> over an embedded user-agent (such as a web-view), and suggests ways to >>> achieve this. >>> >>> >>> Comments welcome! >> >> _______________________________________________ >> 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 >> >> > > > -- > Nat Sakimura (=nat) > Chairman, OpenID Foundation > http://nat.sakimura.org/ > @_nat_en > > _______________________________________________ > 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