Authorization for humans
RESTful, Simple Authorization system with ZERO configuration.
Auth is a module that makes authorization simple and also scalable and powerful. It also has a beautiful RESTful API for use in micro-service architectures and platforms. It is originally desinged to use in Appido, a scalable media market in Iran.
It supports Python2.6+ and if you have a mongodb backbone, you need ZERO configurations steps. Just type auth-server and press enter!
I use Travis and Codecov to keep myself honest.
You need to access to mongodb. If you are using a remote mongodb, provide these environment variables:
MONGO_HOST and MONGO_PORT
pip install auth
ok, lets image you have two users, Jack and Sara. Sara can cook and Jack can dance. Both can laugh.
You also need to choose a secret key for your application. Because you may want to use Auth in various tools and each must have a secret key for seperating their scope.
my_secret_key = "pleaSeDoN0tKillMyC_at" from auth import Authorization cas = Authorization(my_secret_key)
Now, Lets add 3 groups, Cookers, Dancers and Laughers. Remember that groups are Roles. So when we create a group, indeed we create a role:
cas.add_group('cookers') cas.add_group('dancers') cas.add_group('laughers')
Ok, great. You have 3 groups and you need to authorize them to do special things.
cas.add_permission('cookers', 'cook') cas.add_permission('dancers', 'dance') cas.add_permission('laughers', 'laugh')
Good. You let cookers to cook and dancers to dance etc… The final part is to set memberships for Sara and Jack:
cas.add_membership('sara', 'cookers') cas.add_membership('sara', 'laughers') cas.add_membership('jack', 'dancers') cas.add_membership('jack', 'laughers')
That’s all we need. Now lets ensure that jack can dance:
if cas.user_has_permission('jack', 'dance'): print('YES!!! Jack can dance.')
use pydoc to see all methods:
Lets run the server on port 4000:
from auth import api, serve serve('localhost', 4000, api)
Or, from version 0.1.2+ you can use this command:
Simple! Authorization server is ready to use.
You can use it via simple curl or using mighty Requests module. So in you remote application, you can do something like this:
import requests secret_key = "pleaSeDoN0tKillMyC_at" auth_api = "http://127.0.0.1:4000/api"
Lets create admin group:
And lets make Jack an admin:
And finally let’s check if Sara still can cook:
auth comes with a helper class that makes your life easy.
from auth.client import Client service = Client('srv201', 'http://192.168.99.100:4000') print(service) service.get_roles() service.add_role(role='admin')
Ping API, useful for your monitoring tools
Adding, removing and getting membership information.
Adding, removing and getting permissions
Getting user permission info
Adding, removing and getting roles
For example: Which roles can send_mail?
For example: Which users can send_mail?
Get all permissions that a user has
Get all permissions that a role has
Get roles that user assinged to
Get all available roles
Deploying Auth module in production environment is easy:
docker build -t python/auth-server https://raw.githubusercontent.com/ourway/auth/master/Dockerfile docker run --name=auth -e MONGO_HOST='192.168.99.100' -p 4000:4000 -d --restart=always --link=mongodb-server python/auth-server
Feel free to dig into source code. If you think you can improve the documentation, please do so and send me a pull request.
I am trying to add tests as much as I can, but still there are areas that need improvement.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|File Name & Checksum SHA256 Checksum Help||Version||File Type||Upload Date|
|auth-0.5.3-py3-none-any.whl (14.0 kB) Copy SHA256 Checksum SHA256||3.5||Wheel||May 24, 2016|
|auth-0.5.3.tar.gz (9.3 kB) Copy SHA256 Checksum SHA256||–||Source||May 24, 2016|