{"id":22301727,"url":"https://github.com/apache/directory-fortress-enmasse","last_synced_at":"2025-07-29T02:33:01.951Z","repository":{"id":2941100,"uuid":"43539707","full_name":"apache/directory-fortress-enmasse","owner":"apache","description":"Mirror of Apache Directory Fortress Enmasse","archived":false,"fork":false,"pushed_at":"2024-12-02T00:26:54.000Z","size":1540,"stargazers_count":6,"open_issues_count":0,"forks_count":8,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-12-02T00:27:19.213Z","etag":null,"topics":["directory","java","network-client","network-server"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":false,"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/apache.png","metadata":{"files":{"readme":"README-MULTITENANCY.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":"2015-10-02T07:00:06.000Z","updated_at":"2024-12-02T00:25:18.000Z","dependencies_parsed_at":"2024-12-02T00:35:51.787Z","dependency_job_id":null,"html_url":"https://github.com/apache/directory-fortress-enmasse","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdirectory-fortress-enmasse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdirectory-fortress-enmasse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdirectory-fortress-enmasse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdirectory-fortress-enmasse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/directory-fortress-enmasse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227975693,"owners_count":17850099,"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":["directory","java","network-client","network-server"],"created_at":"2024-12-03T18:30:20.716Z","updated_at":"2024-12-03T18:30:21.437Z","avatar_url":"https://github.com/apache.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"   Licensed to the Apache Software Foundation (ASF) under one\n   or more contributor license agreements.  See the NOTICE file\n   distributed with this work for additional information\n   regarding copyright ownership.  The ASF licenses this file\n   to you under the Apache License, Version 2.0 (the\n   \"License\"); you may not use this file except in compliance\n   with the License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing,\n   software distributed under the License is distributed on an\n   \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n   KIND, either express or implied.  See the License for the\n   specific language governing permissions and limitations\n   under the License.\n\n-------------------------------------------------------------------------------\n# README for Apache Fortress Rest Multitenancy Configuration\n\n-------------------------------------------------------------------------------\n## Table of Contents\n\n * SECTION 1. Multitenancy Overview\n * SECTION 2. Multitenant Fortress Realm Instance\n * SECTION 3. Multitenant Fortress Web Instance\n * SECTION 4. Rationale for setting a contextId in two locations\n\n-------------------------------------------------------------------------------\n## SECTION 1.  Multitenancy Overview\n\nFrom Wikipedia:\n* *Software Multitenancy refers to a software architecture in which a single instance of a software runs on a server and serves multiple tenants. A tenant is a group of users who share a common access with specific privileges to the software instance. With a multitenant architecture, a software application is designed to provide every tenant a dedicated share of the instance including its data, configuration, user management, tenant individual functionality and non-functional properties. Multitenancy contrasts with multi-instance architectures, where separate software instances operate on behalf of different tenants.*\n\n *Commentators regard multitenancy as an important feature of cloud computing.*\n\n https://en.wikipedia.org/wiki/Multitenancy\n\nFor an overview of how fortress multitenancy works:\n * [Fortress Core Multitenancy README](https://github.com/apache/directory-fortress-core/blob/master/README-MULTITENANCY.md)\n\n-------------------------------------------------------------------------------\n## SECTION 2.  Multitenant Fortress Realm Instance\n\nFortress Realm uses the tenant id inside the context.xml file:\n\n```xml\n\u003cContext path=\"/commander\" reloadable=\"true\"\u003e\n\n   \u003cRealm className=\"org.apache.directory.fortress.realm.tomcat.Tc7AccessMgrProxy\"\n          defaultRoles=\"\"\n          containerType=\"TomcatContext\"\n          realmClasspath=\"\"\n          contextId=\"HOME\"\n          /\u003e\n\u003c/Context\u003e\n```\n\n * In this example, all realm security checks are bound for the HOME tenant.\n\n-------------------------------------------------------------------------------\n## SECTION 3.  Multitenant Fortress Rest Instance\n\nFortress Rest uses the tenant id found inside the request *contextId* element:\n\n```xml\n\u003cFortRequest\u003e\n   \u003ccontextId\u003eacme123\u003c/contextId\u003e\n   \u003centity xsi:type=\"permission\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\u003e\n       \u003cobjName\u003e\u003c/objName\u003e\n       \u003copName\u003e\u003c/opName\u003e\n   \u003c/entity\u003e\n\u003c/FortRequest\u003e\n```\n\n * This operation is scoped to tenat acme123's subtree.\n\n___________________________________________________________________________________\n## SECTION 4.  Rationale for setting a contextId in two locations\n\nWhy are there are two locations for setting the tenant id?\n\n * The setting in the meta-inf file determines where the caller's HTTP basic auth credentials are validated.\n * The contextId in the request determines the subtree the request's operation is bound to.\n___________________________________________________________________________________\n#### END OF README-MULTITENANCY\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fdirectory-fortress-enmasse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fdirectory-fortress-enmasse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fdirectory-fortress-enmasse/lists"}