{"id":20329876,"url":"https://github.com/f5devcentral/fdc_org_mgmt","last_synced_at":"2025-06-20T21:36:33.992Z","repository":{"id":40534736,"uuid":"276419016","full_name":"f5devcentral/fdc_org_mgmt","owner":"f5devcentral","description":"Application to help onboard and offboard F5 employees to the F5 DevCentral Organization","archived":false,"fork":false,"pushed_at":"2023-06-02T18:11:45.000Z","size":414,"stargazers_count":4,"open_issues_count":10,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-11T21:01:52.545Z","etag":null,"topics":["github","user-management"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/f5devcentral.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-07-01T15:48:17.000Z","updated_at":"2024-03-04T22:21:52.000Z","dependencies_parsed_at":"2025-04-11T21:00:52.177Z","dependency_job_id":"ab7c7407-26bb-471c-9dc1-b5de54b9ba79","html_url":"https://github.com/f5devcentral/fdc_org_mgmt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/f5devcentral/fdc_org_mgmt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5devcentral%2Ffdc_org_mgmt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5devcentral%2Ffdc_org_mgmt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5devcentral%2Ffdc_org_mgmt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5devcentral%2Ffdc_org_mgmt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/f5devcentral","download_url":"https://codeload.github.com/f5devcentral/fdc_org_mgmt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5devcentral%2Ffdc_org_mgmt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261020999,"owners_count":23098249,"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":["github","user-management"],"created_at":"2024-11-14T20:13:51.799Z","updated_at":"2025-06-20T21:36:28.967Z","avatar_url":"https://github.com/f5devcentral.png","language":"Python","readme":"# F5 DevCentral GitHub User Management\nThis repository contains a Lambda application to help onboard and offboard F5 employees to the F5 DevCentral GitHub Organization.\n\nWhile this application is used by F5, the code is abstracted enough to work for any GitHub organization that also uses Azure AD for corporate authentication.\n\n\n## User Experience\nFor detailed documentation on the enrollment process, view the [enrollment documentation](/docs/enrollment.md).\n### Authentication\nThe application authenticates the user against both Azure AD and GitHub.  The user will be redirected to https://login.microsftoneline.com to authenticate against the configured Azure AD tenant and approve the requested OAuth scope.  Once Azure AD authentication is successful, the user will be redirected to https://github.com to authenticate and approve the requested OAuth scope.  \n\n### Enrollment\nOnce the user is successfully authenticated against Azure AD and GitHub, they will see an enroll button on the web page.  Clicking the button will generate a GitHub organization invite that will be sent to the email address associated with the GitHub username.  This email will contain a link allowing the user to accept the GitHub organization invite.  \n\n## Development\n\n### Requirements\nThis application requires that the developer install the [serverless](https://www.serverless.com/framework/docs/providers/aws/guide/installation/) libraries as well as a [local instance of DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html). \n\n * The requirements.txt file contains the required python packages\n * the package.json contains the required packages for serverless\n\n### Environment Variables\nThe application requires the following environment variables to deploy locally or in AWS:\n| Variable  | Description |\n|-----------|-------------|\n| APP_DEBUG | A 0 or 1 value to enable advanced debugging |\n| ROLE_ARN | ARN of the AWS Role to allow lambda access to required resources | \n| GITHUB_APP_KEY | PEM format of the GitHub Application private key for API calls, strip the header and footer so it only contains the base64 encoded payload |\n| SECRET_NAME | AWS Secrets Manager Secret Name |\n| SECRET_ARN | ARN of the AWS Secret Manager Secret |\n\n\n### Serverless Deploy Locally\nTo deploy the application locally:\n\n```bash\nexport APP_DEBUG=1\nexport GITHUB_APP_KEY=enter_your_private_key_in_PEM_format\nexport ROLE_ARN=your_lambda_role_arn\nexport SECRET_NAME=your_secret_manager_secret_name\nexport SECRET_ARN=ARN_of_your_secret_manager_secret\nsls wsgi serve --ssl --stage local\n```\n\nin another terminal, start the local instance of DynamoDB:\n```bash\nsls dynamodb start --migrate --stage local\n```\n\n### Serverless Deploy Development in AWS\nTo deploy the application in AWS:\n\n```bash\nexport APP_DEBUG=0\nexport GITHUB_APP_KEY=enter_your_private_key_in_PEM_format\nexport ROLE_ARN=your_lambda_role_arn\nexport SECRET_NAME=your_secret_manager_secret_name\nexport SECRET_ARN=ARN_of_your_secret_manager_secret\nsls deploy --stage dev\n\n### Serverless Deploy in AWS\nTo deploy the application in AWS:\n\n```bash\nexport APP_DEBUG=0\nexport GITHUB_APP_KEY=enter_your_private_key_in_PEM_format\nexport ROLE_ARN=your_lambda_role_arn\nexport SECRET_NAME=your_secret_manager_secret_name\nexport SECRET_ARN=ARN_of_your_secret_manager_secret\nsls deploy --stage prod\n```\n\n### Serverless Remove from AWS\nTo remove the application from AWS:\n\n```bash\nexport APP_DEBUG=0\nexport GITHUB_APP_KEY=enter_your_private_key_in_PEM_format\nexport ROLE_ARN=your_lambda_role_arn\nexport SECRET_NAME=your_secret_manager_secret_name\nexport SECRET_ARN=ARN_of_your_secret_manager_secret\nsls remove\n```\n\n## Support\nFor support, please open a GitHub issue.  Note, the code in this repository is community supported and is not supported by F5 Networks.  For a complete list of supported projects please reference [SUPPORT.md](support.md).\n\n## Community Code of Conduct\nPlease refer to the [F5 DevCentral Community Code of Conduct](code_of_conduct.md).\n\n\n## License\n[Apache License 2.0](LICENSE)\n\n## Copyright\nCopyright 2014-2020 F5 Networks Inc.\n\n\n### F5 Networks Contributor License Agreement\n\nBefore you start contributing to any project sponsored by F5 Networks, Inc. (F5) on GitHub, you will need to sign a Contributor License Agreement (CLA).\n\nIf you are signing as an individual, we recommend that you talk to your employer (if applicable) before signing the CLA since some employment agreements may have restrictions on your contributions to other projects.\nOtherwise by submitting a CLA you represent that you are legally entitled to grant the licenses recited therein.\n\nIf your employer has rights to intellectual property that you create, such as your contributions, you represent that you have received permission to make contributions on behalf of that employer, that your employer has waived such rights for your contributions, or that your employer has executed a separate CLA with F5.\n\nIf you are signing on behalf of a company, you represent that you are legally entitled to grant the license recited therein.\nYou represent further that each employee of the entity that submits contributions is authorized to submit such contributions on behalf of the entity pursuant to the CLA.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff5devcentral%2Ffdc_org_mgmt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ff5devcentral%2Ffdc_org_mgmt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff5devcentral%2Ffdc_org_mgmt/lists"}