A client library for OAuth2
Project description
Presentation
- OAuth2Client is a simple python client library for OAuth2. It is based on the requests
- warning:
Starting version 1.2.0, versions older that python 3.6.0 will not be supported anymore. This late version was released by the end 2016.
For those that are still using python 2.7, it won’t be supported by the end of 2020 and all library shall stop supporting it.
Login process
For now it can handle two token process:
Authorization code
User Credentials
Client Credentials
User credentials
Getting a couple of access and refresh token is much easier:
scopes = ['scope_1', 'scope_2']
service_information = ServiceInformation('https://authorization-server/oauth/authorize',
'https://token-server/oauth/token',
'client_id',
'client_secret',
scopes)
manager = CredentialManager(service_information,
proxies=dict(http='http://localhost:3128', https='http://localhost:3128'))
manager.init_with_user_credentials('login', 'password')
_logger.debug('Access got = %s', manager._access_token)
# Here access and refresh token may be used
Client credentials
You can also get a token with client credentials process
manager = CredentialManager(service_information,
proxies=dict(http='http://localhost:3128', https='http://localhost:3128'))
manager.init_with_client_credentials()
# here application admin operation may be called
Refresh token
Provided that you kept a previous refresh_token, you can initiate your credential manager with it:
manager = CredentialManager(service_information,
proxies=dict(http='http://localhost:3128', https='http://localhost:3128'))
manager.init_with_token('my saved refreshed token')
Token expiration
CredentialManager class handle token expiration by calling the CredentialManager._is_token_expired static method. This implementation is not accurate for all OAuth server implementation. You’d better extend CredentialManager class and override _is_token_expired method.
Read other fields from token response
CredentialManager can be subclassed to handle other token response fields such as id_token in OpenId protocol.
class OpenIdCredentialManager(CredentialManager):
def __init__(self, service_information, proxies=None):
super(OpenIdCredentialManager, self).__init__(service_information, proxies)
self.id_token = None
def _process_token_response(self, token_response, refresh_token_mandatory):
id_token = token_response.get('id_token')
OpenIdCredentialManager._check_id(id_token)
super(OpenIdCredentialManager, self)._process_token_response(token_response, refresh_token_mandatory)
self.id_token = id_token
@staticmethod
def _check_id(id_token):
# check that open id token is valid
pass
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for oauth2_client-1.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fcb1128377b1c400cec7c9ac94fbb2fb7a41f1b4f5a7b0e13e8dde1517d9a0e |
|
MD5 | f91ef36cbf71d34ee899b5a93d732ddc |
|
BLAKE2b-256 | 1b6bc54e53cffe2c192820fc1df1871f64557519f0fc0e8827a23eec59197da7 |