Single Sign On (SSO) implementeren met Django

Ik wil Django gebruiken voor het implementeren van Single Sign On (SSO) voor meerdere applicaties die we momenteel gebruiken. Hoe kan ik dit implementeren met Django?


Antwoord 1, autoriteit 100%

We gebruiken OpenAM. http://forgerock.com/openam.html

De OpenAM Cookie betekent dat de gebruiker is geauthenticeerd.

Een authenticatie-backend hiervoor is vrij eenvoudig. Minder dan 50 regels code.

https://docs.djangoproject. com/nl/3.1/topics/auth/customizing/#other-authentication-sources

We hebben een klein stukje code geschreven dat een REST-verzoek doet aan de OpenAM-server om de gebruikers-, groeps- en rolinformatie te krijgen. Vervolgens gebruiken we de rollen om de autorisaties van de gebruiker te bepalen.


Antwoord 2, autoriteit 93%

MamaCAS lijkt een goede oplossing. (Het heeft op het moment van schrijven 104 sterren gekregen.)

https://github.com/jbittel/django-mama-cas

MamaCAS is een Django Central Authentication Service (CAS) single sign-on en single logout server. Het implementeert de CAS 1.0, 2.0 en 3.0 protocollen, inclusief enkele optionele functies.

CAS is een webprotocol voor single sign-on en single logout waarmee een gebruiker toegang heeft tot meerdere applicaties nadat hij zijn inloggegevens één keer heeft opgegeven. Het maakt gebruik van beveiligingstickets, unieke tekstreeksen die door de server worden gegenereerd en gevalideerd, waardoor toepassingen een gebruiker kunnen authenticeren zonder directe toegang tot de inloggegevens van de gebruiker (meestal een gebruikers-ID en wachtwoord).


Antwoord 3, autoriteit 80%

Bekijk django-cas-provider+ django-cas-consumer(of django-cas)


Antwoord 4, autoriteit 60%

django-ssois een behoorlijk net pakket dat eenmalige aanmelding implementeert


Antwoord 5, autoriteit 47%

Django Simple SSO is een andere.

https://github.com/aldryn/django-simple-sso

artikel over het gebruik van deze repo
een artikel


Antwoord 6, autoriteit 20%

U kunt SSO als volgt implementeren:

  • Shibboleth als identiteitsprovider
  • Django-website als serviceprovider

Ik ben net klaar met het schrijven van een gedetailleerde handleiding op mijn blog: http://codeinpython.blogspot.com/2015/11/how-to-setup-shibboleth-identity.html


Antwoord 7, autoriteit 20%

CAS (Central Authentication Service) is een goede oplossing die SSO (Single Sign-On) en Single Logout (SLO) voor Django en Flask ondersteunt. Hier is een installatie-instructie om een ​​CAS-server en meerdere clients met dezelfde login/logout te hebben:

  1. Er is een CAS-client nodig, dus ik gebruikte de nieuwe generatie Django-CAS genaamd django-cas-ng pakketen hier is de configuratie om je eigen klant te maken. (Hier is ook een vooraf geconfigureerde clientrepo)
  2. Er is een CAS-server nodig, dus ik gebruikte een vooraf geconfigureerde repo.

[OPMERKING]:

  • Het ondersteunt Django 1.11, 2.x, 3.x

[UPDATE]:

  • Het is ook vermeldenswaard dat u de SESSION_COOKIE_NAMEvan de standaardclient moet wijzigen om onderscheidbare sessies te maken om conflicten bij het inloggen/uitloggen te voorkomen. In Django moet je de volgende regel toevoegen in de settings.pyvoor elke Django-client:
SESSION_COOKIE_NAME = 'client1_sess'

Antwoord 8, autoriteit 7%

Ik heb https://github.com/onelogin/python3-samlgebruikt met Azure AD en Google: vrij eenvoudige installatie met geweldige documenten en ondersteuning.

Other episodes