On Mon, Dec 22, 2008 at 2:50 PM, Sergiu Dumitriu <[email protected]> wrote:
> Pascal Voitot wrote: > > On Mon, Dec 22, 2008 at 12:14 PM, Eduard Moraru <[email protected] > >wrote: > > > >> Yes, but in both cases the security issue would be for someone to sniff > >> the network. > >> In this situation, both methods fail to provide security: > >> HTTP Auth: > >> - sniffer decodes username:password from the Base64 "Authorization: > >> Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" header and can authenticate whenever > >> he pleases. > >> Token: > >> - sniffer grabs the token and uses it himself to pose as the user. > >> + user can call log out and the sniffer's access will be blocked out > >> but the damage can already be done. > >> - the sniffer can catch the initial log-in which sends the GET > >> command with user name and password parameters which are in plain text. > >> + If the authentication process involves more than one step (at > >> least public/private keys or something stronger), the sniffer would not > >> be able to find the user/pass and authenticate whenever he pleases. > >> > > Any HTTP authentication method is either not generic enough, or not safe > enough. The only solution is to use HTTPS. > - Digest auth requires that we store passwords in plaintext > - Basic auth and URL auth have no protection at all > - Cookie auth requires that the user/pass are sent at least once to the > server > - Client side encryption requires the use of a graphical browser, and > enabled javascript > > HTTPS is safe enough to make any of the above methods also safe. > > > For sure, but it enforces the hacker to be just a bit more clever... > > But you're right!!! > > Basic and Digest authentication is a bit light :) > > We should do as Amazon S3 and define our own Authentication digest called > > AWS ;););) > > How do we make clients understand this? Javascript-powered browsers can > emulate this authentication method, but what about lynx and wget? > I was joking :) Basic auth will be good enough :) > > > > >> If we want good security, we need it done by an application on the > >> client side. > >> > >> Another idea would be to use HTTP:// for anonymous access and HTTPS:// > >> for authenticated access. Having HTTPS to secure the communication, the > >> authentication approach could be a relatively simple one(please correct > >> me), even token-based or basic auth. (seems curl handles HTTPS > >> http://curl.netmirror.org/docs/manual.html) > >> > >> We should provide a standard way accessible both to a browser and a > >> command-line tool like curl. > >> > >> WDYT? > > +1 for Basic auth over HTTPS, or cookies over HTTPS. Basic auth should > be used by non-interactive clients (command line tools), since in a > browser it is hard to "logout". Cookies should be used for interactive > tools, which can keep an internal state. > +1 for this... > > > > > Don't know if this is really needed... Currently, without REST, XWiki > > doesn't use HTTPS and has the same authentication risk, am I right? > > But if we want a strong security layer, HTTPS could be a solution... > > No web application has safe authentication without HTTPS. > and even HTTPS can be attacked :) > > >> Pascal Voitot wrote: > >>> On Mon, Dec 22, 2008 at 10:56 AM, Eduard Moraru < > [email protected] > >>> wrote: > >>> > >>> > >>>> Vincent Massol wrote: > >>>> > >>>>> On Dec 19, 2008, at 6:27 PM, Fabio Mancinelli wrote: > >>>>> > >>>>> > >>>>> > >>>>>> Vincent Massol wrote: > >>>>>> > >>>>>> > >>>>>> > >>>>>>> Does this mean I cannot open my browser and call the REST URL > without > >>>>>>> specifying a user? > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> It should open up the authentication dialog where you type your > >>>>>> username > >>>>>> and password (or guest) the first time you request a resource. > >>>>>> > >>>>>> > >>>>> Is that right? It sounds cumbersome and bad for easy automation when > >>>>> you want guest access. > >>>>> > >>>>> Cannot we default to guest when no username/account is specified? > >>>>> > >>>>> > >>>> +1 > >>>> > >>>> > >>> User as a resource seems quite logical... this is the same point of > view > >> as > >>> OpenID... > >>> > >>> > >>> > >>>> I think it would be easier and more natural to have the default to > guest > >>>> or anonymous user. > >>>> When an anonymous user tries to access restricted content -> 403 > >>>> If he wants to log-in, he just does: > >>>> http://user:[email protected]/space/X/page/Y > >>>> > >>>> > >>> for security issues, passing the user/password for each request is > really > >>> not very good... I really prefer the authentication token approach... > >>> > >>> > >>> > >>>> We should mimic the basic auth and skip the pop`ul window that > requires > >>>> user/pass in the browser. > >>>> > >>>> That is: Imply that the current user is exactly who he says he is and > do > >>>> not assume he could be a user with rights to a resource until he > >>>> explicitly says so. > > GET (or POST) /authToken?user=..&pass=.. -> sets a cookie (deleting all > previous values set) > DELETE /authToken -> deletes the cookie > > The semantics seem correct IMO. You GET a token, this has the most > correct meaning. But since GET is defined as a simple resource > retrieval, and here we do a lot of processing behind the scenes, a POST > might be better suited (you send some parameters and expect a result > from the server). > > DELETE also is meaningful. We don't delete a resource with the same > value as a document or object. The difference is that this resource is > not stored on the server, but on the client. However, it is used on the > server, thus it is a correct computational resource that the server > sees, and which it can also DELETE. > > Now, since DELETE is not easy to access from all clients, to delete a > token without using a DELETE request, a client can simply POST or GET > the authToken without specifying user/pass, or using empty values for > them. By the mechanics of cookies, if the server sends an expired cookie > (i.e. an invalid token, or an invalidating token), it will be deleted > from the client. > > > > -- > Sergiu Dumitriu > http://purl.org/net/sergiu/ > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

