Browse Source

renamed reAuth to reconnect

Maurits van der Schee 5 years ago
parent
commit
8e6d7cbfa6
1 changed files with 82 additions and 79 deletions
  1. 82
    79
      README.md

+ 82
- 79
README.md View File

@@ -99,7 +99,7 @@ The following features are supported:
99 99
   - Supports a JSON array as input (batch insert)
100 100
   - Sanitize and validate input using callbacks
101 101
   - Permission system for databases, tables, columns and records
102
-  - Multi-tenant database layouts are supported
102
+  - Multi-tenant single and multi database layouts are supported
103 103
   - Multi-domain CORS support for cross-domain requests
104 104
   - Support for reading joined results from multiple tables
105 105
   - Search support on multiple criteria
@@ -110,6 +110,7 @@ The following features are supported:
110 110
   - Spatial/GIS fields and filters supported with WKT and GeoJSON
111 111
   - Generate API documentation using OpenAPI tools
112 112
   - Authentication via JWT token or username/password
113
+  - Database connection parameters may depend on authentication
113 114
   - Support for reading database structure in JSON
114 115
   - Support for modifying database structure using REST endpoint
115 116
   - Security enhancing middleware is included
@@ -137,84 +138,6 @@ This script will install and run [Composer](https://getcomposer.org/) to update
137 138
 
138 139
 NB: The update script will also patch the dependencies in the vendor directory for PHP 7.0 compatibility.
139 140
 
140
-## Middleware
141
-
142
-You can enable the following middleware using the "middlewares" config parameter:
143
-
144
-- "firewall": Limit access to specific IP addresses
145
-- "cors": Support for CORS requests (enabled by default)
146
-- "xsrf": Block XSRF attacks using the 'Double Submit Cookie' method
147
-- "ajaxOnly": Restrict non-AJAX requests to prevent XSRF attacks
148
-- "dbAuth": Support for "Database Authentication"
149
-- "jwtAuth": Support for "JWT Authentication"
150
-- "basicAuth": Support for "Basic Authentication"
151
-- "reconnect": Reconnect to the database with different parameters
152
-- "authorization": Restrict access to certain tables or columns
153
-- "validation": Return input validation errors for custom rules
154
-- "ipAddress": Fill a protected field with the IP address on create
155
-- "sanitation": Apply input sanitation on create and update
156
-- "multiTenancy": Restricts tenants access in a multi-tenant scenario
157
-- "pageLimits": Restricts list operations to prevent database scraping
158
-- "joinLimits": Restricts join parameters to prevent database scraping
159
-- "customization": Provides handlers for request and response customization
160
-
161
-The "middlewares" config parameter is a comma separated list of enabled middlewares.
162
-You can tune the middleware behavior using middleware specific configuration parameters:
163
-
164
-- "firewall.reverseProxy": Set to "true" when a reverse proxy is used ("")
165
-- "firewall.allowedIpAddresses": List of IP addresses that are allowed to connect ("")
166
-- "cors.allowedOrigins": The origins allowed in the CORS headers ("*")
167
-- "cors.allowHeaders": The headers allowed in the CORS request ("Content-Type, X-XSRF-TOKEN")
168
-- "cors.allowMethods": The methods allowed in the CORS request ("OPTIONS, GET, PUT, POST, DELETE, PATCH")
169
-- "cors.allowCredentials": To allow credentials in the CORS request ("true")
170
-- "cors.exposeHeaders": Whitelist headers that browsers are allowed to access ("")
171
-- "cors.maxAge": The time that the CORS grant is valid in seconds ("1728000")
172
-- "xsrf.excludeMethods": The methods that do not require XSRF protection ("OPTIONS,GET")
173
-- "xsrf.cookieName": The name of the XSRF protection cookie ("XSRF-TOKEN")
174
-- "xsrf.headerName": The name of the XSRF protection header ("X-XSRF-TOKEN")
175
-- "ajaxOnly.excludeMethods": The methods that do not require AJAX ("OPTIONS,GET")
176
-- "ajaxOnly.headerName": The name of the required header ("X-Requested-With")
177
-- "ajaxOnly.headerValue": The value of the required header ("XMLHttpRequest")
178
-- "dbAuth.mode": Set to "optional" if you want to allow anonymous access ("required")
179
-- "dbAuth.usersTable": The table that is used to store the users in ("users")
180
-- "dbAuth.usernameColumn": The users table column that holds usernames ("username")
181
-- "dbAuth.passwordColumn": The users table column that holds passwords ("password")
182
-- "dbAuth.returnedColumns": The columns returned on successful login, empty means 'all' ("")
183
-- "jwtAuth.mode": Set to "optional" if you want to allow anonymous access ("required")
184
-- "jwtAuth.header": Name of the header containing the JWT token ("X-Authorization")
185
-- "jwtAuth.leeway": The acceptable number of seconds of clock skew ("5")
186
-- "jwtAuth.ttl": The number of seconds the token is valid ("30")
187
-- "jwtAuth.secret": The shared secret used to sign the JWT token with ("")
188
-- "jwtAuth.algorithms": The algorithms that are allowed, empty means 'all' ("")
189
-- "jwtAuth.audiences": The audiences that are allowed, empty means 'all' ("")
190
-- "jwtAuth.issuers": The issuers that are allowed, empty means 'all' ("")
191
-- "basicAuth.mode": Set to "optional" if you want to allow anonymous access ("required")
192
-- "basicAuth.realm": Text to prompt when showing login ("Username and password required")
193
-- "basicAuth.passwordFile": The file to read for username/password combinations (".htpasswd")
194
-- "reconnect.driverHandler": Handler to implement retrieval of the database driver ("")
195
-- "reconnect.addressHandler": Handler to implement retrieval of the database address ("")
196
-- "reconnect.portHandler": Handler to implement retrieval of the database port ("")
197
-- "reconnect.databaseHandler": Handler to implement retrieval of the database name ("")
198
-- "reconnect.usernameHandler": Handler to implement retrieval of the database username ("")
199
-- "reconnect.passwordHandler": Handler to implement retrieval of the database password ("")
200
-- "authorization.tableHandler": Handler to implement table authorization rules ("")
201
-- "authorization.columnHandler": Handler to implement column authorization rules ("")
202
-- "authorization.recordHandler": Handler to implement record authorization filter rules ("")
203
-- "validation.handler": Handler to implement validation rules for input values ("")
204
-- "ipAddress.tables": Tables to search for columns to override with IP address ("")
205
-- "ipAddress.columns": Columns to protect and override with the IP address on create ("")
206
-- "sanitation.handler": Handler to implement sanitation rules for input values ("")
207
-- "multiTenancy.handler": Handler to implement simple multi-tenancy rules ("")
208
-- "pageLimits.pages": The maximum page number that a list operation allows ("100")
209
-- "pageLimits.records": The maximum number of records returned by a list operation ("1000")
210
-- "joinLimits.depth": The maximum depth (length) that is allowed in a join path ("3")
211
-- "joinLimits.tables": The maximum number of tables that you are allowed to join ("10")
212
-- "joinLimits.records": The maximum number of records returned for a joined entity ("1000")
213
-- "customization.beforeHandler": Handler to implement request customization ("")
214
-- "customization.afterHandler": Handler to implement response customization ("")
215
-
216
-If you don't specify these parameters in the configuration, then the default values (between brackets) are used.
217
-
218 141
 ## TreeQL, a pragmatic GraphQL
219 142
 
220 143
 [TreeQL](https://treeql.org) allows you to create a "tree" of JSON objects based on your SQL database structure (relations) and your query.
@@ -646,6 +569,86 @@ The following Geometry types are supported by the GeoJSON implementation:
646 569
 
647 570
 The GeoJSON functionality is enabled by default, but can be disabled using the "controllers" configuration.
648 571
 
572
+## Middleware
573
+
574
+You can enable the following middleware using the "middlewares" config parameter:
575
+
576
+- "firewall": Limit access to specific IP addresses
577
+- "cors": Support for CORS requests (enabled by default)
578
+- "xsrf": Block XSRF attacks using the 'Double Submit Cookie' method
579
+- "ajaxOnly": Restrict non-AJAX requests to prevent XSRF attacks
580
+- "dbAuth": Support for "Database Authentication"
581
+- "jwtAuth": Support for "JWT Authentication"
582
+- "basicAuth": Support for "Basic Authentication"
583
+- "reconnect": Reconnect to the database with different parameters
584
+- "authorization": Restrict access to certain tables or columns
585
+- "validation": Return input validation errors for custom rules
586
+- "ipAddress": Fill a protected field with the IP address on create
587
+- "sanitation": Apply input sanitation on create and update
588
+- "multiTenancy": Restricts tenants access in a multi-tenant scenario
589
+- "pageLimits": Restricts list operations to prevent database scraping
590
+- "joinLimits": Restricts join parameters to prevent database scraping
591
+- "customization": Provides handlers for request and response customization
592
+
593
+The "middlewares" config parameter is a comma separated list of enabled middlewares.
594
+You can tune the middleware behavior using middleware specific configuration parameters:
595
+
596
+- "firewall.reverseProxy": Set to "true" when a reverse proxy is used ("")
597
+- "firewall.allowedIpAddresses": List of IP addresses that are allowed to connect ("")
598
+- "cors.allowedOrigins": The origins allowed in the CORS headers ("*")
599
+- "cors.allowHeaders": The headers allowed in the CORS request ("Content-Type, X-XSRF-TOKEN")
600
+- "cors.allowMethods": The methods allowed in the CORS request ("OPTIONS, GET, PUT, POST, DELETE, PATCH")
601
+- "cors.allowCredentials": To allow credentials in the CORS request ("true")
602
+- "cors.exposeHeaders": Whitelist headers that browsers are allowed to access ("")
603
+- "cors.maxAge": The time that the CORS grant is valid in seconds ("1728000")
604
+- "xsrf.excludeMethods": The methods that do not require XSRF protection ("OPTIONS,GET")
605
+- "xsrf.cookieName": The name of the XSRF protection cookie ("XSRF-TOKEN")
606
+- "xsrf.headerName": The name of the XSRF protection header ("X-XSRF-TOKEN")
607
+- "ajaxOnly.excludeMethods": The methods that do not require AJAX ("OPTIONS,GET")
608
+- "ajaxOnly.headerName": The name of the required header ("X-Requested-With")
609
+- "ajaxOnly.headerValue": The value of the required header ("XMLHttpRequest")
610
+- "dbAuth.mode": Set to "optional" if you want to allow anonymous access ("required")
611
+- "dbAuth.usersTable": The table that is used to store the users in ("users")
612
+- "dbAuth.usernameColumn": The users table column that holds usernames ("username")
613
+- "dbAuth.passwordColumn": The users table column that holds passwords ("password")
614
+- "dbAuth.returnedColumns": The columns returned on successful login, empty means 'all' ("")
615
+- "jwtAuth.mode": Set to "optional" if you want to allow anonymous access ("required")
616
+- "jwtAuth.header": Name of the header containing the JWT token ("X-Authorization")
617
+- "jwtAuth.leeway": The acceptable number of seconds of clock skew ("5")
618
+- "jwtAuth.ttl": The number of seconds the token is valid ("30")
619
+- "jwtAuth.secret": The shared secret used to sign the JWT token with ("")
620
+- "jwtAuth.algorithms": The algorithms that are allowed, empty means 'all' ("")
621
+- "jwtAuth.audiences": The audiences that are allowed, empty means 'all' ("")
622
+- "jwtAuth.issuers": The issuers that are allowed, empty means 'all' ("")
623
+- "basicAuth.mode": Set to "optional" if you want to allow anonymous access ("required")
624
+- "basicAuth.realm": Text to prompt when showing login ("Username and password required")
625
+- "basicAuth.passwordFile": The file to read for username/password combinations (".htpasswd")
626
+- "reconnect.driverHandler": Handler to implement retrieval of the database driver ("")
627
+- "reconnect.addressHandler": Handler to implement retrieval of the database address ("")
628
+- "reconnect.portHandler": Handler to implement retrieval of the database port ("")
629
+- "reconnect.databaseHandler": Handler to implement retrieval of the database name ("")
630
+- "reconnect.usernameHandler": Handler to implement retrieval of the database username ("")
631
+- "reconnect.passwordHandler": Handler to implement retrieval of the database password ("")
632
+- "authorization.tableHandler": Handler to implement table authorization rules ("")
633
+- "authorization.columnHandler": Handler to implement column authorization rules ("")
634
+- "authorization.recordHandler": Handler to implement record authorization filter rules ("")
635
+- "validation.handler": Handler to implement validation rules for input values ("")
636
+- "ipAddress.tables": Tables to search for columns to override with IP address ("")
637
+- "ipAddress.columns": Columns to protect and override with the IP address on create ("")
638
+- "sanitation.handler": Handler to implement sanitation rules for input values ("")
639
+- "multiTenancy.handler": Handler to implement simple multi-tenancy rules ("")
640
+- "pageLimits.pages": The maximum page number that a list operation allows ("100")
641
+- "pageLimits.records": The maximum number of records returned by a list operation ("1000")
642
+- "joinLimits.depth": The maximum depth (length) that is allowed in a join path ("3")
643
+- "joinLimits.tables": The maximum number of tables that you are allowed to join ("10")
644
+- "joinLimits.records": The maximum number of records returned for a joined entity ("1000")
645
+- "customization.beforeHandler": Handler to implement request customization ("")
646
+- "customization.afterHandler": Handler to implement response customization ("")
647
+
648
+If you don't specify these parameters in the configuration, then the default values (between brackets) are used.
649
+
650
+In the sections below you find more information on the built-in middleware.
651
+
649 652
 ### Authentication
650 653
 
651 654
 Currently there are three types of authentication supported. They all store the authenticated user in the `$_SESSION` super global.

Loading…
Cancel
Save