-
Notifications
You must be signed in to change notification settings - Fork 10
Authentication and authorization
This page is mainly intended for team members who need to understand how our system is designed to work, although it could also be of interest to anyone reusing the codebase for a new project.
We use two authentication methods:
- CMS Identity Management (IDM), which we tend to call "EUA" informally. This is a single-sign-on system built on Okta, and it includes multi-factor authentication.
- Django user authentication, which is a simple username-and-password system.
Users in our production environment use CMS IDM. Team members use Django user authentication for development purposes.
Dev info:
Separate from user authentication and authorization, our dev and val environment URLs (including experimental branches) require basic HTTP auth as a simple gate to prevent use of non-prod versions of the site outside of the development team. We have environment variables HTTP_AUTH_PASSWORD
and HTTP_AUTH_USER
to configure those credentials.
- CMS IDM:
/login/
(this is configured by theLOGIN_URL
parameter) - Django authentication:
/admin/
We have four roles: reader, editor, manager, admin.
Django includes a "groups" feature for managing permissions. We have one group for each role.
CMS IDM is connected to a "job code" system that manages authorization: individual users request a specific job code appropriate to their role for each CMS application they use. We have four job codes per IDM environment, one for each role. Each job code is connected to a Django group. We have details about job codes on the CMS side (requires login) and about roles and permissions on the Django side.
The expected process for an IDM user is:
- Have an IDM account
- Request an eRegs job code within the CMS system
- Job code is approved
- Log into eRegs
- eRegs automatically creates the user with the appropriate group according to their job code
For Django user authentication for team members, we create users, manage permissions, and deactivate users by hand.
See Team developer guide (requires login) for all URLs registered in Okta.
Configuration for each environment is controlled by the DJANGO_SETTINGS_MODULE environment variable. Local is cmcs_regulations.settings.local
, and everything else is cmcs_regulations.settings.deploy
.
Methods supported:
- Dev local
- Django auth
- Experimental branches
- Django auth
- One branch is configured to enable Test IDM
- Dev environment
- Django auth
- Test IDM
- Val environment
- Django auth
- Val (Impl) IDM
- Prod environment
- Django auth
- Prod IDM
Please note that all pages on this GitHub wiki are draft working documents, not complete or polished.
Our software team puts non-sensitive technical documentation on this wiki to help us maintain a shared understanding of our work, including what we've done and why. As an open source project, this documentation is public in case anything in here is helpful to other teams, including anyone who may be interested in reusing our code for other projects.
For context, see the HHS Open Source Software plan (2016) and CMS Technical Reference Architecture section about Open Source Software, including Business Rule BR-OSS-13: "CMS-Released OSS Code Must Include Documentation Accessible to the Open Source Community".
For CMS staff and contractors: internal documentation on Enterprise Confluence (requires login).
- Federal policy structured data options
- Regulations
- Resources
- Statute
- Citation formats
- Export data
- Site homepage
- Content authoring
- Search
- Timeline
- Not built
- 2021
- Reg content sources
- Default content view
- System last updated behavior
- Paragraph indenting
- Content authoring workflow
- Browser support
- Focus in left nav submenu
- Multiple content views
- Content review workflow
- Wayfinding while reading content
- Display of rules and NPRMs in sidebar
- Empty states for supplemental content
- 2022
- 2023
- 2024
- Medicaid and CHIP regulations user experience
- Initial pilot research outline
- Comparative analysis
- Statute research
- Usability study SOP
- 2021
- 2022
- 2023-2024: 🔒 Dovetail (requires login)
- 🔒 Overview (requires login)
- Authentication and authorization
- Frontend caching
- Validation checklist
- Search
- Security tools
- Tests and linting
- Archive