I'm building my startup and I'm thinking ahead for shared use of services.
So far I want to allow people who have a user account on one app to be able to use the same user account on another app. This means I will have to build an authentication server.
I would like some opinions on how to allow an app to talk to the authentication server. Should I use curl? Should I use Python's http libs? All the code will be in Python.
All it's going to do is ask the authentication server if the person is allowed to use that app and the auth server will return a JSON user object. All authorization (roles and resources) will be app independent, so this app will not have to handle that.
Sorry if this seems a bit newbish; this is the first time I have separated authentication from the actual application.
Your question isn't really a programming problem so much as it is an architecture problem.  What I would recommend for your specific situation is to setup an LDAP server for authentication, authorization, and accounting (AAA).  Then have your applications use that (every language has modules and libraries for LDAP).  It is a reliable, secure, proven, and well-known way of handling such things.
Even if you strictly want to enforce HTTP-based authentication it is easy enough to slap an authentication server in front of your LDAP and call it a day.  There's even existing code to do just that so you won't have to re-invent the wheel.
Talking to an Authentication Server