Samuel Erdtman
2016-11-01 16:41:36 UTC
Hi,
Thanks for the great work of putting this together. I have a few comments
on the current draft. See below
Best Regards
Samuel Erdtman
5. Using Inter-app URI Communication for OAuth
The end of this section is a bit confusing with first a MUST statement and
then a RECOMMENDED statement
âNative apps MUST use an external user-agent to perform OAuthâ
and
âThis best practice focuses on the browser as the RECOMMENDED external
user-agent for native apps.â
7.1.1. Custom URI Scheme Namespace Considerations
âFor example, an app that controls the domain name "app.example.com"
can use "com.example.app:/" as their custom scheme.â
drop the slash in the custom schema.
7.2. App-claimed HTTPS URI Redirection
âWhen the browser encounters a claimed URL, instead of the
page being loaded in the browser, the native app is launched instead
with the URL supplied as a launch parameter.â
drop one âinsteadâ changing it to:
âWhen the browser encounters a claimed URL, instead of the
page being loaded in the browser, the native app is launched
with the URL supplied as a launch parameter.â
7.2. App-claimed HTTPS URI Redirection
If this is the recommended way to do it when possible maybe it should be
first?
8.1. Embedded User-Agents
âEmbedded user-agents are an alternative method for authorization
native apps.â
change to
âEmbedded user-agents are an alternative method to authorize
native apps.â
or
âEmbedded user-agents are an alternative method for authorization
of native apps.â
8. Security Considerations
I see normative language here (MUST, RECOMMENDED, SHOULD, etc.), and it
felt a bit odd to me to have that under Security Considerations. Not sure
if there are guidelines around that, but to me it would make sense to keep
the normative parts out of Security Considerations. And it says
âConsiderationsâ, to me that sounds mor like things to think about then
this is how it works.
8.2. Protecting the Authorization Code
âA limitation of using custom URI schemes for redirect URIs is that
multiple apps can typically register the same scheme, which makes it
indeterminate as to which app will receive the Authorization Code.
PKCE [RFC7636] details how this limitation can be used to execute a
code interception attack (see Figure 1). Loopback IP based redirect
URIs may be susceptible to interception by other apps listening on
the same loopback interface.â
I think it would be preferable to separate custom URI and Loopback IP based
redirect.
8.2. Protecting the Authorization Code
âLoopback IP based redirect
URIs may be susceptible to interception by other apps listening on
the same loopback interface.â
Are you referring to an application listening to loopback traffic or an
application killing the original application and start listening on the
same port. The second alternative would be relatively intrusive and notable.
Appendix A. Server Support Checklist
1. Support custom URI-scheme redirect URIs.
I could not see that this was required in section Section 7.1.
Appendix A. Server Support Checklist
5. Support PKCE.
in Section 8.2 it says MUST
âAuthorization servers MUST support PKCE [RFC7636]
for public native app clients.â
Thanks for the great work of putting this together. I have a few comments
on the current draft. See below
Best Regards
Samuel Erdtman
5. Using Inter-app URI Communication for OAuth
The end of this section is a bit confusing with first a MUST statement and
then a RECOMMENDED statement
âNative apps MUST use an external user-agent to perform OAuthâ
and
âThis best practice focuses on the browser as the RECOMMENDED external
user-agent for native apps.â
7.1.1. Custom URI Scheme Namespace Considerations
âFor example, an app that controls the domain name "app.example.com"
can use "com.example.app:/" as their custom scheme.â
drop the slash in the custom schema.
7.2. App-claimed HTTPS URI Redirection
âWhen the browser encounters a claimed URL, instead of the
page being loaded in the browser, the native app is launched instead
with the URL supplied as a launch parameter.â
drop one âinsteadâ changing it to:
âWhen the browser encounters a claimed URL, instead of the
page being loaded in the browser, the native app is launched
with the URL supplied as a launch parameter.â
7.2. App-claimed HTTPS URI Redirection
If this is the recommended way to do it when possible maybe it should be
first?
8.1. Embedded User-Agents
âEmbedded user-agents are an alternative method for authorization
native apps.â
change to
âEmbedded user-agents are an alternative method to authorize
native apps.â
or
âEmbedded user-agents are an alternative method for authorization
of native apps.â
8. Security Considerations
I see normative language here (MUST, RECOMMENDED, SHOULD, etc.), and it
felt a bit odd to me to have that under Security Considerations. Not sure
if there are guidelines around that, but to me it would make sense to keep
the normative parts out of Security Considerations. And it says
âConsiderationsâ, to me that sounds mor like things to think about then
this is how it works.
8.2. Protecting the Authorization Code
âA limitation of using custom URI schemes for redirect URIs is that
multiple apps can typically register the same scheme, which makes it
indeterminate as to which app will receive the Authorization Code.
PKCE [RFC7636] details how this limitation can be used to execute a
code interception attack (see Figure 1). Loopback IP based redirect
URIs may be susceptible to interception by other apps listening on
the same loopback interface.â
I think it would be preferable to separate custom URI and Loopback IP based
redirect.
8.2. Protecting the Authorization Code
âLoopback IP based redirect
URIs may be susceptible to interception by other apps listening on
the same loopback interface.â
Are you referring to an application listening to loopback traffic or an
application killing the original application and start listening on the
same port. The second alternative would be relatively intrusive and notable.
Appendix A. Server Support Checklist
1. Support custom URI-scheme redirect URIs.
I could not see that this was required in section Section 7.1.
Appendix A. Server Support Checklist
5. Support PKCE.
in Section 8.2 it says MUST
âAuthorization servers MUST support PKCE [RFC7636]
for public native app clients.â