You text does not mention what will be a common use case, where the native app 
uses the password grant to fetch a refresh and access token.  Whether or not an 
app can keep a secret, it's better to have it store the token than the 
username/password pair.



________________________________
From: Anthony Nadalin <[email protected]>
To: "OAuth WG ([email protected])" <[email protected]>
Sent: Tuesday, June 28, 2011 6:15 PM
Subject: [OAUTH-WG] Native Application Text

 
9. Native Applications

A native application is a client which is installed and executes on the 
end-user's device (i.e. desktop application, native mobile application, etc.).  
Native applications may require special consideration related to security, 
platform capabilities, and overall
 end-user experience.  The following are examples of how native applications 
may utilize OAuth:

   o  Initiate an Authorization Request using an external user-agent: The 
native application can capture the response from the authorization server using 
a variety of techniques such as the use of the various methods for redirection 
including a URI identifying
 a custom URI scheme (registered with the operating system to invoke the native 
application as handler), manual copy-and-paste, running a local webserver, 
browser plug-ins, or by providing a redirection URI identifying a server-hosted 
resource under the native
 application's control, which in turn makes the response available to the 
native application.
   o  Initiate an Authorization Request using an embedded user-agent:  The 
native application obtains the response by directly communicating with the 
embedded user-agent.  Techniques include monitoring state changes emitted 
during URL loading, monitoring http
 headers, accessing the user-agent's cookie jar, etc.

When choosing between launching an external user-agent and an embedded 
user-agent, native application developers should consider the following:

   o  External user-agents may improve completion rate as the end-user may 
already have an active session with the authorization server removing the need 
to re-authenticate, and provide a familiar user-agent user experience and 
functionality.  The end-user
 may also rely on extensions or add-ons to assist with authentication (e.g. 
password managers or 2-factor device reader).
   o  Embedded user-agents may offer an improved end-user flow, as they remove 
the need to switch context and open new windows. 
   o  Embedded user-agents pose a security challenge because end-users are 
authenticating in an unidentified window without access to the visual 
protections found on by many of the external user-agents.  Embedded user-agents 
educate end-user to trust unidentified
 requests for authentication (making phishing attacks easier to execute).

When choosing between implicit and authorization code grant types, the 
following should be considered:

   o  Native applications that use the authorization code grant type flow 
SHOULD do so without using client password credentials, due to the native 
application’s inability to keep those credentials secure.
   o  When using the implicit grant type flow a refresh token is not returned  
 
_______________________________________________
OAuth mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/oauth
_______________________________________________
OAuth mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to