{"id":23859232,"url":"https://github.com/openconext/openconext-engineblock","last_synced_at":"2025-09-08T07:30:54.446Z","repository":{"id":39606910,"uuid":"3900071","full_name":"OpenConext/OpenConext-engineblock","owner":"OpenConext","description":"OpenConext SAML 2.0 IdP/SP Gateway","archived":false,"fork":false,"pushed_at":"2025-09-04T09:02:48.000Z","size":114585,"stargazers_count":16,"open_issues_count":115,"forks_count":26,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-09-04T09:38:28.032Z","etag":null,"topics":["openconext","proxy","saml","saml2"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/OpenConext.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.txt","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-04-02T11:49:31.000Z","updated_at":"2025-08-20T13:26:01.000Z","dependencies_parsed_at":"2023-10-16T20:45:05.066Z","dependency_job_id":"9fd136c5-45fe-415a-8da9-56db072ff8e3","html_url":"https://github.com/OpenConext/OpenConext-engineblock","commit_stats":null,"previous_names":[],"tags_count":301,"template":false,"template_full_name":null,"purl":"pkg:github/OpenConext/OpenConext-engineblock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenConext%2FOpenConext-engineblock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenConext%2FOpenConext-engineblock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenConext%2FOpenConext-engineblock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenConext%2FOpenConext-engineblock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenConext","download_url":"https://codeload.github.com/OpenConext/OpenConext-engineblock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenConext%2FOpenConext-engineblock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274152128,"owners_count":25231285,"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","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"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":["openconext","proxy","saml","saml2"],"created_at":"2025-01-03T03:33:08.277Z","updated_at":"2025-09-08T07:30:54.435Z","avatar_url":"https://github.com/OpenConext.png","language":"PHP","readme":"\n# OpenConext EngineBlock\n\nBuild Status:\n\n![test-integration](https://github.com/OpenConext/OpenConext-engineblock/workflows/test-integration/badge.svg?branch=main\u0026event=push)\n\n## License\n\nSee the [LICENSE][license] file\n\n## Disclaimer\n\nSee the [NOTICE.txt][notice] file\n\n## Upgrading\n\nSee the [UPGRADING.md][upgrading] file\n\n## (Theme) Development\n\nPlease see the [wiki][eb-wiki-theme-development] for information on how to get started with developing themes for OpenConext EngineBlock\nIn short, themes require front-end resource compilation which can be done by running the following commands:\n\nFirst set the desired theme name in the parameters.yml. This will load the correct Twig templates as they are a part of the Symfony config.\n\n```\nparameters:\n    # Other parameters have been left out for brevity\n    theme.name: skeune\n```\n\nNext build the front-end assets for the selected theme.\n\n```\n    (cd theme \u0026\u0026 yarn install --frozen-lockfile \u0026\u0026 yarn build)\n```\n\nFinally, when not in an environment with the debug flag enabled, you need to clear the cache. This will ensure the translations and templates are swapped out for the ones found in the new theme.\n\n```\n$ php72 ./app/console cache:clear --env=prod\n```\n\nTo setup the required tooling on the container, the following steps might be useful:\n\n    cd /opt/openconext/OpenConext-engineblock/theme\n    sudo curl --silent --location https://rpm.nodesource.com/setup_11.x | sudo bash -\n    sudo yum install nodejs\n    sudo npm install --global yarn\n    (yarn install --frozen-lockfile \u0026\u0026 yarn build)\n\nIn addition to the npm/yarn scripts that are available to run (unit/e2e) tests and quality assurance, you can also use the\nTwig linting tool built into Symfony. To run this linter:\n\n```\nIf you are able to run Ant build targets use:\n$ ant php-twig-lint\n\nBut you can also run the linter directly from the Symfony console. From the webroot:\n$ php72 ./app/console lint:twig theme/\n```\n\n## System Requirements\n\n* Linux\n* Apache\n* PHP 7.2:\n    - libxml\n    - apcu\n    - apcu-bc (a requirement while we are using an older Doctrine version)\n* MySQL \u003e 5.x with settings:\n    - default-storage-engine=InnoDB\n    - default-collation=utf8_unicode_ci\n* [Manage][manage]\n* Composer (for php dendency management)\n* Yarn (optional for theme deployment)\n\n_**Note**:\nWhile care was given to make EngineBlock as compliant as possible with mainstream Linux distributions,\nit is only regularly tested with RedHat Enterprise Linux and CentOS._\n\n## Installation\n\n_**Note**: you are highly encouraged to use [OpenConext-Devconf][op-dev] to deploy OpenConext installations._\n\nIf you are reading this then you've probably already installed a copy of EngineBlock somewhere on the destination server,\nif not, then that would be step 1 for the installation.\n\nIf you do not use [OpenConext-Devconf][op-dev] and have an installed copy and your server meets all the requirements\nabove, then please follow the steps below to start your installation.\n\n### First, create an empty database\n\n**EXAMPLE**\n\n    mysql -p\n    Enter password:\n    Welcome to the MySQL monitor.  Commands end with ; or \\g.\n    Your MySQL connection id is 21\n    Server version: 5.0.77 Source distribution\n\n    Type 'help;' or '\\h' for help. Type '\\c' to clear the buffer.\n\n    mysql\u003e create database engineblock default charset utf8 default collate utf8_unicode_ci;\n\n\n### Then configure application\n\nEngineBlock requires you to have the folders below writable by your webserver user.\n\n     app/cache\n\nRun the command below in the root of your project to install the required dependencies.\n\n    composer install --no-interaction --optimize-autoloader --prefer-dist --no-dev\n\n **Note**:\nThe command above assumes that the application must be build for production, and omits development dependencies.\n\nThen edit the `parameters.yml` with your favorite editor and review the settings to make sure it matches your configuration.\n\n### Install database schema updates\n\nTo install possible database updates, call doctrine migrations by using the following console command:\n\n    app/console doctrine:migrations:migrate --env=prod\n\n_**Note**:\nEngineBlock requires database settings, without it doctrine migrate will not function. Furthermore, this assumes that\nthe application must use the production settings (`--env=prod`), this could be replaced with `dev` should you run a\ndevelopment version._\n\n\n### Configure HTTP server\n\nConfigure a single virtual host, this should point to the `web` directory:\n\n    DocumentRoot    /opt/www/engineblock/web\n\nIt should also serve both the `engine.yourdomain.example` and `engine-api.yourdomain.example` domains.\n\nMake sure the `ENGINEBLOCK_ENV` is set, and that the `SYMFONY_ENV` is set, this can be mapped from `ENGINEBLOCK_ENV` as:\n\n| `ENGINEBLOCK_ENV` | `SYMFONY_ENV` |\n|-------------------| --- |\n| production        | prod |\n| acceptance        | acc |\n| test              | test |\n| dev               | dev |\n\n**EXAMPLE**\n\n    SetEnv ENGINEBLOCK_ENV !!ENV!!\n    SetEnv SYMFONY_ENV !!SF_ENV!!\n\nMake sure you have the following rewrite rules (replace `app.php` with `app_dev.php` for development):\n\n    RewriteEngine On\n    # We support only GET/POST/HEAD\n    RewriteCond %{REQUEST_METHOD} !^(POST|GET|HEAD)$\n    RewriteRule .* - [R=405,L]\n    # If the requested url does not map to a file or directory, then forward it to index.php/URL.\n    # Note that the requested URL MUST be appended because Corto uses the PATH_INFO server variable\n    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f\n    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d\n    RewriteRule ^(.*)$ /app.php/$1 [L] # Send the query string to index.php\n\n    # Requests to the domain (no query string)\n    RewriteRule ^$ app.php/ [L]\n\nNote that EngineBlock SHOULD run on HTTPS, you can redirect users from HTTP to HTTPS\nwith the following Apache rewrite rules on a *:80 VirtualHost:\n\n    RewriteEngine   on\n    RewriteCond     %{SERVER_PORT} ^80$\n    RewriteRule     ^(.*)$ https://%{SERVER_NAME}$1 [L,R=301]\n\n### Grab the front controller\nCopy the `app_dev.php.dist` file to the `web` directory.\n\n```bash\nOpenconext-engineblock $ cp app_dev.php.dist web/app_dev.php\n```\n\n### Test your EngineBlock instance\n\nUse these URLs to test your EngineBlock instance:\n\n- http://engine.example.com, this should redirect you to the following URL\n- https://engine.example.com, show a page detailing information about the capabilities\n- https://engine.example.com/authentication/idp/metadata, this should present you with the IdP metadata of EngineBlock\n- https://engine.example.com/authentication/sp/metadata, this should present you with the SP metadata of EngineBlock\n- https://engine.example.com/authentication/proxy/idps-metadata, this should present you with the proxy IdP metadata\n- https://engine-api.example.com, this should return an empty 200 OK response\n\n### Security\n\nPlease see [security considerations](docs/security.md) to harden your Engineblock after installation.\n\n## Updating\n\nIt is recommended practice that you deploy engineblock in a directory that includes the version number and use a\nsymlink to link to the 'current' version of EngineBlock.\n\n**EXAMPLE**\n\n    .\n    ..\n    engineblock -\u003e engineblock-v1.6.0\n    engineblock-v1.5.0\n    engineblock-v1.6.0\n\nIf you are using this pattern, an update can be done with the following:\n\n1. Download and deploy a new version in a new directory.\n\n2. Check out the release notes in UPGRADING.md\n\n3. Run the database migrations script.\n\n        app/console doctrine:migrations:migrate --env=prod\n\n4. Change the symlink.\n\n## Browsers support\n\nThe list of browsers that should be supported:\n\n| [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"IE / Edge\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eIE / Edge | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eFirefox | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eChrome | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eSafari | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png\" alt=\"iOS Safari\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eiOS Safari | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/samsung-internet/samsung-internet_48x48.png\" alt=\"Samsung\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eSamsung | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png\" alt=\"Opera\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eOpera |\n| --------- | --------- | --------- | --------- | --------- | --------- | --------- |\n| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions| last 2 versions| last 2 versions| last 2 versions\n\nThe list of browsers being tested:\n\n| [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"IE / Edge\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eIE / Edge | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eFirefox | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eChrome | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eChrome Android | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eSafari | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png\" alt=\"iOS Safari\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eiOS Safari |\n| --------- | --------- | --------- | --------- | --------- | --------- |\n| IE11, Edge last version| last version| last version| last version| last version| last version|\n\n## Additional Documentation\n\nMost additional documentation can be found in the [wiki][wiki]. If you want to help with development for instance, you\ncan take a look at the [Development Guidelines][wiki-development]\n\nAlso, the following documentation can be found in the [docs][docs] directory:\n\n1. [License][docs-license]\n1. [Release Procedure][docs-release]\n1. [EngineBlock Input and Output Command Chains][docs-filter]\n1. [Release notes for releases \u003c 5.0.0][docs-release-notes]\n\n[qa-build]: https://github.com/OpenConext/OpenConext-engineblock/workflows/test-integration/badge.svg\n[license]: LICENSE\n[notice]: NOTICE.txt\n[upgrading]: UPGRADING.md\n[comp]: https://getcomposer.org/\n[op-dev]: https://github.com/OpenConext/OpenConext-devconf\n[manage]: https://github.com/OpenConext/OpenConext-manage\n[eb-wiki-theme-development]: https://github.com/OpenConext/OpenConext-engineblock/wiki/Development-Guidelines#theme-development\n[wiki]: https://github.com/OpenConext/OpenConext-engineblock/wiki\n[wiki-development]: https://github.com/OpenConext/OpenConext-engineblock/wiki/Development-Guidelines\n[docs]: https://github.com/OpenConext/OpenConext-engineblock/tree/master/docs/index.md\n[docs-license]: https://github.com/OpenConext/OpenConext-engineblock/tree/master/docs/LICENSE\n[docs-release]: https://github.com/OpenConext/OpenConext-engineblock/tree/master/docs/release_procedure.md\n[docs-filter]: https://github.com/OpenConext/OpenConext-engineblock/tree/master/docs/filter_commands.md\n[docs-release-notes]: https://github.com/OpenConext/OpenConext-engineblock/tree/master/docs/release_notes\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenconext%2Fopenconext-engineblock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenconext%2Fopenconext-engineblock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenconext%2Fopenconext-engineblock/lists"}