{"id":18597711,"url":"https://github.com/aem-design/ansible-role-aem-security-test","last_synced_at":"2026-07-16T23:34:10.148Z","repository":{"id":80556418,"uuid":"178790354","full_name":"aem-design/ansible-role-aem-security-test","owner":"aem-design","description":"ansible role that tests if AEM instance is secure","archived":false,"fork":false,"pushed_at":"2021-05-15T14:22:26.000Z","size":37,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-10-21T20:38:35.545Z","etag":null,"topics":["aem","aem-automation","aem-tools","automation","best-practices","devops"],"latest_commit_sha":null,"homepage":"http://aem.design","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/aem-design.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-01T05:16:32.000Z","updated_at":"2022-04-06T05:18:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"e91ddae2-607a-4295-abbe-4ecdf13ef29f","html_url":"https://github.com/aem-design/ansible-role-aem-security-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aem-design/ansible-role-aem-security-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aem-design%2Fansible-role-aem-security-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aem-design%2Fansible-role-aem-security-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aem-design%2Fansible-role-aem-security-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aem-design%2Fansible-role-aem-security-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aem-design","download_url":"https://codeload.github.com/aem-design/ansible-role-aem-security-test/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aem-design%2Fansible-role-aem-security-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35560452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aem","aem-automation","aem-tools","automation","best-practices","devops"],"created_at":"2024-11-07T01:29:10.522Z","updated_at":"2026-07-16T23:34:10.111Z","avatar_url":"https://github.com/aem-design.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ansible Role: AEM Security Test\n\n[![Build Status](https://travis-ci.org/aem-design/ansible-role-aem-security-test.svg?branch=master)](https://travis-ci.org/aem-design/ansible-role-aem-security-test)\n\nThis role tests AEM Dispatcher instance for specific Security patterns.\n\u003e This role was developed as part of\n\u003e [AEM.Design](http://aem.design/)\n\n## Requirements\n\nNone.\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    test_target_url: \"http://localhost:4502\"\n    is_admin_password_default: false\n    admin_user: admin\n    admin_password: admin\n    type:\n      - author\n      - publish\n      - dispatcher\n      - writetest\n      - services\n    \nTo specify service that should be used as target for tests set the ```test_target_url``` variable\n\n    test_target_url: \"http://localhost:4502\"\n\nIf you have default admin:admin credentials on the service set ```is_admin_password_default``` to true, this will use default admin:admin for service authentication when required\n\n    is_admin_password_default: true\n\nRunning ansible playbook with this param will achieve desired outcome\n\n     -e is_admin_password_default=true\n\n\nIf you have diffrent admin account set following variables to your specified values\n\n    admin_user: admin\n    admin_password: admin\n    \n\nTests have types and they can be filtered by default all tests are executed\n\n    type:\n      - author\n      - publish\n      - dispatcher\n      - writetest\n      - services\n\nYou can run specific tests by specifying extra vars when running the playbook.\nFollowing example will indicate that you want to only run dispatcher and services type:\n\n    --extra-vars='{\"type\": [dispatcher,services]}'\n\n\n\n## Test Template\n\nEach test definition is used to drive Ansible uri_module. Following example template has all currently used options \n\n    test_group_list:\n      - name: \"Projects Access\"\n        type:\n          - author\n        user: \"admin\", \n        password: \"{{ admin_password }}\", \n        url: \"{{ testtarget_url }}/projects.html\"\n        tests:\n          - { \n            name: \"Name of Test\",\n            user: \"admin\", \n            password: \"{{ admin_password }}\", \n            valid_status_code: \"{{ 200 if (is_admin_password_default) else 401 }}\" \n            body: \"writetest=success\", \n            timeout: 30,\n            return_content: true,\n            method: \"POST\",\n            headers: { CQ-Handle: \"/content\", CQ-Path: \"/content\"}\n            }\n\nFirst level of the list the Groups of tests, this is used to create inherited ```user```, ```password``` and ```uri``` attributes, specifying these attributes at the group level does not require those attributes at child test level.\n\nEach Group should have a ```type``` list that describes purpose for the group which is then used for filtering during test runs. \n\nEach Group should have a ```tests``` list that defines atomic url actions to be executed.\n\nEach Test needs have following fields:\n    - ```name``` field describing test outcome.\n    - ```valid_status_code``` field with desired status code from url, defaults to 200\n    - ```user``` field for desired user attribute for authentication, defaults to ''\n    - ```password``` field for desired password attribute for authentication, defaults to ''\n    - ```body``` field for sending data to url, defaults to ''\n    - ```timeout``` field for duration to wait for a service, defaults to 5 sec\n    - ```return_content``` field for setting if content should be returned, defaults to 'false'\n    - ```method``` field describing action for url, defaults to 'GET'\n    - ```headers``` field describing headers to be used for url, defaults to empty array\n \n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\n```yaml\n- hosts: all\n  roles:\n    - aem_design.aem_security_test\n```\n\n## License\n\nApache 2.0\n\n## Author Information\n\nThis role was created by [Max Barrass](https://aem.design/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faem-design%2Fansible-role-aem-security-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faem-design%2Fansible-role-aem-security-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faem-design%2Fansible-role-aem-security-test/lists"}