Custom authentication in Google App Engine

The OpenID consumer (part of the excellent "app engine samples" open source project) currently works (despite the warnings in its README, which is old) and would let you use OpenID for your users' logins.

django's auth is also usable, via e.g. this project (at least the users part, not necessarily groups and permissions though they might get them working any time).


This is a pretty out-of-the-box solution, and works pretty well: http://code.scotchmedia.com/engineauth/docs/index.html

It has built-in support for Facebook, Google+, Twitter, LinkedIn, GitHub and OpenId (via Google App Engine).

you just have to redirect the user to /auth/facebook or /auth/google and so on (this url is customizable).

It also implements two classes: User and UserProfile, every User is a unique account in your app and may relate to one or more UserProfiles -- which one is a login strategy that the unique User has to login into your app (if it's unclear, it's because my English is very bad, the docs explain better).

P.S.: The documentation is not very complete, but the code is pretty simple, short and self-explanatory. Also, there is a discussion here in which the author provides various answers to questions of confused and beggining users.


Well django 1.0 was updated today on Google AppEngine. But you can make user authentication like anything else you just can't really use sessions because it is so massive.

There is a session utility in http://gaeutilities.appspot.com/

http://gaeutilities.appspot.com/session

http://code.google.com/p/gaeutilities/

Or,

You have to create your own user tables and hash or encrypt passwords, then probably create a token system that mimics session with just a token hash or uuid cookie (sessions are just cookies anyways).

I have implemented a few with just basic google.webapp request and response headers. I typically use uuids for primary keys as the user id, then encrypt the user password and have their email for resets.

If you want to authorize users for external access to data you could look at OAuth for application access.

If you just want to store data by an id and it is more consumer facing, maybe just use openid like stackoverflow and then attach profile data to that identifier like django profiles (http://code.google.com/p/openid-selector/).

django 1.0 just came out today on GAE but I think the same problems exist, no sessions, you have to really create your own that store session data.