This is a client for Nexaas ID. It brings support for generic OAuth
authentication and for Django and Flask frameworks.
## OAuth client
The general use is:
```python
from nexaas_id_client import NexaasIDOAuthClient
client = NexaasIDOAuthClient(
application_token,
application_secret,
server='id.nexaas.com',
redirect_uri=application_callback,
)
```
The authorization URL can get from `client.authorize_url` and the access token
can be retrieve in the callback procedure from `client.get_access_token(code)`,
where `code` is the access grant code.
### Settings for Django and Flask
- `NEXAAS_ID_CLIENT_ID`: the application token
- `NEXAAS_ID_CLIENT_SECRET`: the application secret
- `NEXAAS_ID_HOST`: the Nexaas ID host
- `NEXAAS_ID_CLIENT_SCOPE`: the scope (can be `None`)
### Django
In Django you must include the following path to the main `urlpatterns`:
```python
path('oauth/', include('nexaas_id_client.support.django.urls'))
```
The views that requires authorized access must be decorated:
```python
from nexaas_id_client.support.django.decorators import authorization_required
@authorization_required
def index(request, api_client: 'nexaas_id_client.NexaasIDClient') -> 'django.http.request.HttpResponse':
...
```
Your view must expect an `api_client` as argument – see bellow. Anyway you can
retrieve de access token from the session, under the key `oauth_access_token`.
In order to logout, use the app route `signout`. The query string key
`next_url` inform where to redirect after sign out.
**Caution:** If the view returns falsy (`None`, `False`, `0`, `""`, et cetera),
the `authorization_required` decorator redirects to sign out URL.
### Flask
The Flask support supplies a blueprint capable of deal with Nexaas ID OAuth.
The use:
```python
from flask import Flask
from nexaas_id_client.support.flask import oauth
app = Flask(__name__)
app.register_blueprint(oauth, url_prefix='/oauth')
```
The decorator is similar to Django support:
```python
from nexaas_id_client.support.flask import authorization_required, oauth
...
@app.route('/')
@authorization_required
def index(api_client: 'nexaas_id_client.NexaasIDClient') -> 'flask.Response':
...
```
Your view must expect an `api_client` as argument – see bellow. Anyway you can
retrieve de access token from the session, under the key `oauth_access_token`.
In order to logout, use the blueprint route `signout`. The query string key
`next_url` inform where to redirect after sign out.
## API client
The API client is responsible for dealing with Nexaas ID API.
You can get it this way:
```python
api_client = NexaasIDClient.from_oauth(
client.get_access_token(code),
client=client,
)
```
Where `client` is the OAuth client and `code` is the access grant code.
But, if you are using a framework support, you don’t need to do it: views
decorated by `authorization_required` will receive an API client ready to use.
### Resource API
The API client attributes:
- `access_token: str` – the access token
- `refresh_token: str` – the refresh token
- `scope: str` – the allowed scope
- `token: OAuthToken` – a token wrapper
- `id: str` – the client id
- `secret: str` – the client secret
- `server: urllib.parse.ParseResult` – the Nexaas ID server
- `personal_info: PersonalInfo` – the user’s personal data
- `professional_info: ProfessionalInfo` – the user’s professional data
- `emails: Emails` – a dictionary containing user id and the its e-mails list
- `contacts: Contacts` – a dictionary containing user id and its phone numbers
and eventually other contacts
- `invite(email: str) -> Invitation` – invite another user to the current
application
The classes `PersonalInfo`, `ProfessionalInfo`, `Emails`, `Contacts` and
`Invitation` are built on demand metaprogrammatically, and have an `id`
attribute (`uuid.UUID`) at least.
Other attributes you may expect:
- `PersonalInfo`
- `full_name: str`
- `first_name: str`
- `last_name: str`
- `nickname: str`
- `email: str`
- `birth: datetime.date`
- `gender: str`
- `language: str`
- `picture: str`
- `timezone: str`
- `country: str`
- `city: str`
- `bio: str`
- `ProfessionalInfo`
- `profession: str`
- `company: str`
- `position: str`
- `Emails`
- `emails: List[str]`
- `Contacts`:
- `phone_numbers: List[str]`
- `Invitation`:
- `email` (invited user)
- `requester` (inviter id)
- `OAuthToken`:
- `access_token: str`
- `refresh_token: str`
- `expired_at: datetime.datetime`
- `scope: str`
- `expired: bool` (maybe not present)
Metadata
Release files for nexaas-id-client 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| nexaas_id_client-1.0.1-py3-none-any.whl | Python 3 | none | any | Details for nexaas_id_client-1.0.1-py3-none-any.whl |
Release files / nexaas_id_client-1.0.1-py3-none-any.whl
| Download URL | nexaas_id_client-1.0.1-py3-none-any.whl |
|---|---|
| Size | 11.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
232380f36a43139f788d8c0d48c0596ef4d60d60c44ef3fa54cb345567cd7812
|
|
BLAKE2b-256 checksum How to use checksums |
7241325af8921412eb2d8696208e64818c77af5ffe6ee8f75431848f763cd603
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/28.8.0 requests-toolbelt/0.8.0 tqdm/4.25.0 PyPy/6.0.0
|
Security for nexaas-id-client 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.