# Django PingCAP Cookie-SSO

## Documention
[Development document](https://docs.google.com/document/d/1jInrfvaD2DMsubehFJ-0k4KKwIe7xYhak6w6qqaq8jQ/edit#heading=h.7o12sd2rg8di)

## Requirements

- Python >= 3.6
- Django >= 2.0
- jwcrypto == 0.6.0

## How to use

Add app to your INSTALLED_APPS 

```
INSTALLED_APPS  = (
    ...
    'pingcap_cookie_sso'
)
```

Setup MIDDLEWARE

```
MIDDLEWARE = (
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',  # Make sure this middlerware is before pingcap_cookie_sso
    'pingcap_cookie_sso.middleware.SsoMiddleware'
)
```

Setup Authentication backends

```
AUTHENTICATION_BACKENDS = ['pingcap_cookie_sso.authentication.SsoAuthBackend']
```

At last

```
$ python manage.py migrate
```

You need cofing some required settings

```
PINGCAP_COOKIE_SSO = {
    'IDP_API_TOKEN': '*****************',
    'IDP_API_ENDPOINT': 'https://dev-accounts.pingcap.com/api/_/sso/session-info',
    'SSO_COOKIE_NAME': 'sid',
    'JWT_PUBLIC_KEY': """
-----BEGIN PUBLIC KEY-----
***
-----END PUBLIC KEY-----
"""
}
```

Done!
