{"id":20946367,"url":"https://github.com/tcarlander/django-crowd-sso","last_synced_at":"2026-04-29T02:02:53.404Z","repository":{"id":57419591,"uuid":"74944082","full_name":"tcarlander/django-crowd-sso","owner":"tcarlander","description":"Atlasssian Crowd Integration ","archived":false,"fork":false,"pushed_at":"2019-03-21T09:16:20.000Z","size":115,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-11T10:42:10.082Z","etag":null,"topics":["crowd","crowd-authentication","django","django-crowd-sso","sso"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tcarlander.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.TXT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-28T06:29:43.000Z","updated_at":"2022-02-17T16:35:43.000Z","dependencies_parsed_at":"2022-09-13T07:51:19.475Z","dependency_job_id":null,"html_url":"https://github.com/tcarlander/django-crowd-sso","commit_stats":null,"previous_names":["wfp-bkk/django-crowd-sso"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcarlander%2Fdjango-crowd-sso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcarlander%2Fdjango-crowd-sso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcarlander%2Fdjango-crowd-sso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcarlander%2Fdjango-crowd-sso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tcarlander","download_url":"https://codeload.github.com/tcarlander/django-crowd-sso/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243337751,"owners_count":20275360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crowd","crowd-authentication","django","django-crowd-sso","sso"],"created_at":"2024-11-18T23:52:56.516Z","updated_at":"2025-12-29T02:09:50.622Z","avatar_url":"https://github.com/tcarlander.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"django-crowd-sso [![Build Status](https://travis-ci.org/WFP-BKK/django-crowd-sso.svg?branch=master)](https://travis-ci.org/WFP-BKK/django-crowd-sso) [![Coverage Status](https://coveralls.io/repos/github/WFP-BKK/django-crowd-sso/badge.svg?branch=master)](https://coveralls.io/github/WFP-BKK/django-crowd-sso?branch=master) \n================\nSimple Atlassian CROWD authentication backend for Django with SSO support\n\n\nConfiguration:\n==============\nPut a CROWD configuration in your `settings.py`:\n\n\n```\nCROWD = {\n    'url': 'http://your.crowd.url:port/crowd/rest',         # your CROWD rest API url\n    'app_name': 'your-registered-crowd-application-name',   # appname, registered with CROWD\n    'password': 'application-password',                     # correct password for provided appname\n    'superuser': False,                                     # if True makes CROWD-imported users superusers\n    'staffuser': False,                                     # if True makes CROWD-imported users staffuser\n    'validation':'10.11.40.34',                             # The ipaddress the Crowd server is responding to\n    'sso': False,                                           # TRurn on SSO\n    'blocked_creation_domains': ['@example.org'],           # Domains not allowed to be created in the local db\n    'crowd_group': 'CrowdUser',                             # Group that all imported users are placed in\n    'DTS_not_use_public_schema': False                      # If DTS is installed don't save users and groups in Public schema\n}\n```\n\nAdd `crowd.CrowdBackend` in your `AUTHENTICATION_BACKENDS` settings list.\nPut it first so that password are only kept in CROWD:\n\n```\nAUTHENTICATION_BACKENDS = (\n    'crowd.backends.CrowdBackend'\n    'django.contrib.auth.backends.ModelBackend',\n)\n```\n \n\nAdd  `crowd.middleware.CrowdMiddleware` to the Middleware \n```\nMIDDLEWARE_CLASSES = (\n...\n          'crowd.middleware.CrowdMiddleware',\n...\n)\n\n```\n\n\nAUTHENTICATION_BACKENDS list to make sure you always start with crowd authentication before falling over to\na local account.\n\nsimple test:\n`py.test`\n\nTox test:\n`tox`\n\ntest currently does not cover the SSO \n\n\n**Release Notes**\n==================\n\n**Version 0.57**\n\nAdded support for Django Tenant Schema (django-tenant-schemas) \nWill create crowd_group in the public schema if DTS is installed, unless setting NotPublicSchema == True\n\n    \n**Version 0.56**\n\nAdd users \"Pulled\" from crowd to the group defined in crowd_group, default \"CrowdUser\" \nNew setting \n'disallowed_creation_domains': ['@wfp.org']\n\n\n**New For version 0.52**\n\nAdded disallowed emails to the import first version hardcoded @example.org, will be a setting in future\n\nany email with @wfp.org but not in crowd will be in the disallowed list\n \nexample of use\n\n* User with email a@b.c is already user 'a' in the local db as a django created user\n* User with email b@c.c is already user 'b' in the local db as a imported user from Crowd\n* User with email c@a.b is no already user in the local db but exists in Crowd so it will be imported as user 'c'\n* User with email d@e.f is not in local db nor in Crowd\n* User with email e@example.org has a domain that is on the disallowed list \n\n```\nfrom crowd.backends import import_users_from_email_list\n\n        emails = [\"a@b.c\", \"b@c.c\", \"c@a.b\", \"d@e.f\",\"e@example.org\"]\n        added_or_found, not_found, not_alowed = import_users_from_email_list(emails)\n        print(added_or_found)\n        print(not_found)\n        print(not_allowed)\n```\nResulting printout:\n```\n['a','b','c']\n\n['d@e.f']\n\n['e@example.org']\n```\n\n\nCredits:\n========\n\nOriginally written for Django v1.3 by Konstantin J. Volkov \u003ckonstantin-j-volkov@yandex.ru\u003e at 12.07.2012\n\nRefactored, put together and tested with Django v1.4 by Grigoriy Beziuk \u003cgbezyuk@gmail.com\u003e at 27.08.2012\n\nRefactored, updated for Django 1.9 and added SSO and other features by Tobias Carlander \u003ctobias.carlander@wfp.org\u003e at 2015/03/25\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftcarlander%2Fdjango-crowd-sso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftcarlander%2Fdjango-crowd-sso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftcarlander%2Fdjango-crowd-sso/lists"}