+1000 on a OAuth Security Best Practices document. I'd be happy to
review or help some.

I think right now the answer is: keep away from implicit grants and do
not store bearer tokens in the browser. Instead, use the authorization
code grant which only exposes bearer tokens intra-server.

For /*web apps*/, I feel the only good place to store authentication,
session or token information is in a HTTPOnly flagged cookie to keep JS
away from sensitive information.

Aloha, Jim


On 9/8/16 12:38 PM, John Bradley wrote:
> It is an interesting discussion, indicating that perhaps a best
> practices document is in order.
>
> I have had several people ask me about SPA using OAuth recently.
>
> Until we get the W3C to finish fetch and extend it for token binding,
> we are going to have ongoing issues with bearer tokens in the browser
> and where to store them.
>
> I don’t know that there is a perfect solution for bearer tokens, but
> documenting the tradeoffs may be useful.
>
> John B.
>
>> On Sep 8, 2016, at 6:07 PM, Jim Manico <j...@manicode.com
>> <mailto:j...@manicode.com>> wrote:
>>
>> +1 I think that's a very fair perspective.
>>
>> Putting sensitive data in LocalStorage is still a very bad idea. :)
>> One XSS and gone. Maybe XSS is not a big deal in a native app, but
>> it's death to Web apps.
>>
>> Aloha, Jim
>>
>>
>> On 9/8/16 10:20 AM, Oleg Gryb wrote:
>>> In SPA/REST env session ID is not very useful, so it's *an* auth
>>> token or tokens (not necessary OAuth one) that are stored in a
>>> cookie. It's used to get REST calls authenticated and yes, it
>>> usually runs in a multi-domain envs (think about micro services
>>> architecture). It makes me think that the value of HTTPOnly will
>>> continue diminishing, while the value of good cross-domain policies
>>> will increase. Just my opinion coming from my experience. I don't
>>> have big (or small) data available to confirm that.  
>>>
>>>
>>>     ------------------------------------------------------------------------
>>>     *From:* Jim Manico <j...@manicode.com>
>>>     *To:* Oleg Gryb <o...@gryb.info>; Adam Lewis
>>>     <adam.le...@motorolasolutions.com>
>>>     *Cc:* OAuth WG <oauth@ietf.org>
>>>     *Sent:* Thursday, September 8, 2016 12:51 PM
>>>     *Subject:* Re: [OAUTH-WG] best practices for implicit grant /
>>>     token storage
>>>
>>>     > Since SPA is a new normal now, it becomes extremely difficult
>>>     to enforce HTTPOnly flag, because JS needs access to secrets
>>>     including those stored in cookies.
>>>     In a browser environment, this is only true when you need to
>>>     make cross domain requests or are using cookie data for
>>>     something other than session state.
>>>     If your current page origin and the page you are requesting are
>>>     the same, then your cookies can be HTTPOnly without impacting
>>>     functionality. If you need additional cookies for other things
>>>     that need to be accessed via JS, use a separate cookie.
>>>     So sure, there are a few workflows in OAuth where you need to
>>>     access "cookie data" from JS and HTTPOnly is not viable. But
>>>     there are a few where it is viable. I don't think it's as simple
>>>     as "we need to talk to cookie data via JS all the time.".
>>>     Aloha, Jim
>>>     On 9/8/16 8:15 AM, Oleg Gryb wrote:
>>>>     Jim,
>>>>
>>>>     It's outdated a bit. Since SPA is a new normal now, it becomes
>>>>     extremely difficult to enforce HTTPOnly flag, because JS needs
>>>>     access to secrets including those stored in cookies. 5-10 years
>>>>     ago I would always enforce HTTPOnly and now - I can't.
>>>>
>>>>     Thanks,
>>>>     Oleg.
>>>>
>>>>         
>>>> ------------------------------------------------------------------------
>>>>         *From:* Jim Manico <j...@manicode.com> <mailto:j...@manicode.com>
>>>>         *To:* Adam Lewis <adam.le...@motorolasolutions.com>
>>>>         <mailto:adam.le...@motorolasolutions.com>
>>>>         *Cc:* OAuth WG <oauth@ietf.org> <mailto:oauth@ietf.org>
>>>>         *Sent:* Thursday, September 8, 2016 10:45 AM
>>>>         *Subject:* Re: [OAUTH-WG] best practices for implicit grant
>>>>         / token storage
>>>>
>>>>         In the web world, cookies for session identifiers are much
>>>>         safer - since we can use HTTPOnly cookies to protect them
>>>>         from theft via XSS. The same mechanism is not possible for
>>>>         localStorage. Overall, security folk say •keep sensitive
>>>>         data out of localStorage• since one XSS and it's stolen.
>>>>         There is also a huge body of work underway to make secure
>>>>         cookies even more so.
>>>>
>>>>         I'm not sure how this translates to native apps.
>>>>
>>>>         --
>>>>         Jim Manico
>>>>         @Manicode
>>>>
>>>>         On Sep 8, 2016, at 3:02 AM, Adam Lewis
>>>>         <adam.le...@motorolasolutions.com
>>>>         <mailto:adam.le...@motorolasolutions.com>> wrote:
>>>>
>>>>>         Hi,
>>>>>
>>>>>         The WG is currently putting together best practices for
>>>>>         native apps.  I would like to better understand the best
>>>>>         practices around ua-based-apps, especially as it relates
>>>>>         to token storage.  I've read various blog posts about the
>>>>>         preference between storing tokens in cookies vs.  Web
>>>>>         Storage (localStorage/sessionStorage).  The current set of
>>>>>         specs are rather silent on the matter, as it is more of an
>>>>>         implementation issue (but that is where most mistakes are
>>>>>         made).
>>>>>
>>>>>         What is the WG's guidance on this?
>>>>>         _______________________________________________
>>>>>         OAuth mailing list
>>>>>         OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>>         https://www.ietf.org/mailman/listinfo/oauth
>>>>
>>>>         _______________________________________________
>>>>         OAuth mailing list
>>>>         OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>         https://www.ietf.org/mailman/listinfo/oauth
>>>>
>>>>
>>>
>>>     -- 
>>>     Jim Manico
>>>     Manicode Security
>>>     https://www.manicode.com <https://www.manicode.com/>
>>>
>>>
>>>     _______________________________________________
>>>     OAuth mailing list
>>>     OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>     https://www.ietf.org/mailman/listinfo/oauth
>>>
>>>
>>
>> -- 
>> Jim Manico
>> Manicode Security
>> https://www.manicode.com
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>> https://www.ietf.org/mailman/listinfo/oauth
>

-- 
Jim Manico
Manicode Security
https://www.manicode.com

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to