The top text area is used for adding, editing and deleting
user/password pairs. User/password pairs may be entered, one per line,
user name first separated from the password with blank space. Once all
pairs have been entered, the "UPDATE" button may be selected to commit
the changes, which take effect immediately. The values may be changed,
at any time, by repeating this process and editing, removing or adding
pairs.
The lower area is used to associate available user/password pairs (as
entered in the upper area) with DataSources (or vice versa). The type
of action is selected by choosing a mode, one from the choices:
- Show User(s)/Password(s) for
Selected DataSource (Select
1)
- Show DataSource(s) for Selected
User/Password (Select
1)
- Apply Selected User(s)/Password(s)
to Selected DataSource
If the first mode choice is selected, a datasource is selected from the
available list and clicking the "APPLY" button displays the associated
user/password pair value(s). Similarly, if the second mode is selected,
a user/password pair is chosen and clicking the "APPLY" button displays
the associated datasource(s). In the third mode, both user/password
pair value(s) and datasource value(s) are selected. Clicking the
"APPLY" button then implements the selected associations. The result is
that the selected user/password pair(s) will be used for the selected
datasource(s).
Further
Controlling Access to a DataSource
Username/password combinations can be used to allow or deny any access
to datasources published to a DataPortal server, as described
above. However, more detailed control over datasource access
by specific users is available by using datasource user access control
configuration files. A user (determined by the user/passsword value
entered and presented to the DataPortal server) can be granted or
denied access to any of the tables in the published database. For each
table the user has access to, the user may be granted access to all
rows of the database or only those rows in the table where the value of
a specified column matches the user name value. The configuration files
that control detailed user access are governed by the following:
- File Name and
Location:
If detailed user access control for a given datasource
is required, a file name of exactly the same name (including case) as
the datasource should be placed in the user datasource access control
directory: DataSourceAccessControl ,
which is immediately below the DataPortal application root directory in
the server. If there is no such file for a given datasource, access to that datasource is not restricted.
- File Contents:
Each user access control file should consist of one block of lines for
each table that a user should be granted access to, where each line
should have the form: Field Name_k = Field Value, where Field Names are "Table", "Available"
and "UserColumn" and "k" is the table number, starting at 1.
Each table block has the following structure, where table "1" is shown:
| Field
Name |
= |
Field
Value |
| Table_1 |
= |
Table
Name |
| Available_1 |
= |
Whether
the table is available to users
(Values: "TRUE","FALSE") |
| UserColumn_1 |
= |
Column whose value must match the user value
to return the row |
Addtional Rules:
- If no access control file exists with the same name as a
datasource, access to that datasource is NOT RESTRICTED
- If there is no block (in an access control file) associated with a
table in the database, that table will NOT BE AVAILABLE
- If a UserColumn line is blank or has no value, NO USER VALUE FILTERING is performed for that table - so all or none of the
data is returned, depending on the "Available_k" value
|
By way of example, assume a company keeps a mix of information,
including employee and customer order information, in an "OPERATIONS"
database. Further, assume that the company wants to use this database
to deliver current order status data to its customers. The complete
"OPERATIONS" database consists of the tables:
CUSTOMERS, EMPLOYEES, ORDERS, PRODUCTS, SUPPLIERS, SHIPPERS, TERRITORIES
The company would like each customer to receive each of the rows in the
"ORDERS" table that correspond to the customer's name, as stored in the
database. Further, the company would like to provide the complete
"SHIPPERS" and "PRODUCTS" data to each customer so the customers can
follow up directly with shippers, if necessary, and also consider
ordering addtional items from their product list. The company does not
want to provide any other information from the "OPERATIONS" database -
e.g. customers have no need to get access to employee information.
The "OPERATIONS" database is published to a DataPortal server with the
name "OPEN_ORDERS" and a set of user names and passwords is assigned
for each customer given access to the "OPEN_ORDERS" datasource. Order
items exist as rows in the "ORDERS" table and the column "CUSTOMERID"
is used to specify the customer for each order item. The user/password
pairs are assigned to be consistent with values used in the
"CUSTOMERID" column of the "ORDERS" table.
Then a user access control file, named "OPEN_ORDERS" is placed in the
DataSourceAccessControl directory and has the following contents:
| OPEN_ORDERS: |
|
Table_1=ORDERS
Available_1=TRUE
UserColumn_1=CUSTOMERID
Table_2=SHIPPERS
Available_2=TRUE
UserColumn_2=
Table_5=PRODUCTS
Available_5=TRUE
|
When a customer that has been assigned a
valid user name and password (for example: VINET / vinetPass) accesses the "OPEN_ORDERS" datasource with
their user name and password and transfers the datasource to their
database of choice, the result is that they receive the order items
that match their assigned user/customer name in the "CUSTOMERID" column
of the "ORDERS" table and the entire "SHIPPERS" and "PRODUCTS" tables,
since the UserColumn_k line is blank or missing, respectively, for the
"SHIPPERS" and "PRODUCTS" blocks. Since there are no other blocks for
other tables (e.g. EMPLOYEES), no other tables are included in the
transfer. The "ORDERS" table, at the source, might look like:
Source "ORDERS" Table:
| ORDERID |
CUSTOMERID |
EMPLOYEEID |
ORDERDATE |
REQUIREDDATE |
SHIPPEDDATE |
SHIPVIA |
FREIGHT |
SHIPNAME |
SHIPADDRESS |
SHIPCITY |
SHIPREGION |
SHIPPOSTALCODE |
SHIPCOUNTRY |
| 10248 |
VINET |
5 |
04.07.1996 00:00:00.000 |
01.08.1996 00:00:00.000 |
16.07.1996 00:00:00.000 |
3 |
32.3800 |
Vins et alcools Chevalier |
59 rue de l'Abbaye |
Reims |
null |
51100 |
France |
| 10249 |
TOMSP |
6 |
05.07.1996 00:00:00.000 |
16.08.1996 00:00:00.000 |
10.07.1996 00:00:00.000 |
1 |
11.6100 |
Toms Spezialit?ten |
Luisenstr. 48 |
M?nster |
null |
44087 |
Germany |
| 10250 |
HANAR |
4 |
08.07.1996 00:00:00.000 |
05.08.1996 00:00:00.000 |
12.07.1996 00:00:00.000 |
2 |
65.8300 |
Hanari Carnes |
Rua do Pa?o, 67 |
Rio de Janeiro |
RJ |
05454-876 |
Brazil |
| 10253 |
HANAR |
3 |
10.07.1996 00:00:00.000 |
24.07.1996 00:00:00.000 |
16.07.1996 00:00:00.000 |
2 |
58.1700 |
Hanari Carnes |
Rua do Pa?o, 67 |
Rio de Janeiro |
RJ |
05454-876 |
Brazil |
| 10274 |
VINET |
6 |
06.08.1996 00:00:00.000 |
03.09.1996 00:00:00.000 |
16.08.1996 00:00:00.000 |
1 |
6.0100 |
Vins et alcools Chevalier |
59 rue de l'Abbaye |
Reims |
null |
51100 |
France |
| 10295 |
VINET |
2 |
02.09.1996 00:00:00.000 |
30.09.1996 00:00:00.000 |
10.09.1996 00:00:00.000 |
2 |
1.1500 |
Vins et alcools Chevalier |
59 rue de l'Abbaye |
Reims |
null |
51100 |
France |
| 10438 |
TOMSP |
3 |
06.02.1997 00:00:00.000 |
06.03.1997 00:00:00.000 |
14.02.1997 00:00:00.000 |
2 |
8.2400 |
Toms Spezialit?ten |
Luisenstr. 48 |
M?nster |
null |
44087 |
Germany |
| 10446 |
TOMSP |
6 |
14.02.1997 00:00:00.000 |
14.03.1997 00:00:00.000 |
19.02.1997 00:00:00.000 |
1 |
14.6800 |
Toms Spezialit?ten |
Luisenstr. 48 |
M?nster |
null |
44087 |
Germany |
| 10541 |
HANAR |
2 |
19.05.1997 00:00:00.000 |
16.06.1997 00:00:00.000 |
29.05.1997 00:00:00.000 |
1 |
68.6500 |
Hanari Carnes |
Rua do Pa?o, 67 |
Rio de Janeiro |
RJ |
05454-876 |
Brazil |
| 10548 |
TOMSP |
3 |
26.05.1997 00:00:00.000 |
23.06.1997 00:00:00.000 |
02.06.1997 00:00:00.000 |
2 |
1.4300 |
Toms Spezialit?ten |
Luisenstr. 48 |
M?nster |
null |
44087 |
Germany |
| 10903 |
HANAR |
3 |
24.02.1998 00:00:00.000 |
24.03.1998 00:00:00.000 |
04.03.1998 00:00:00.000 |
3 |
36.7100 |
Hanari Carnes |
Rua do Pa?o, 67 |
Rio de Janeiro |
RJ |
05454-876 |
Brazil |
| 10922 |
HANAR |
5 |
03.03.1998 00:00:00.000 |
31.03.1998 00:00:00.000 |
05.03.1998 00:00:00.000 |
3 |
62.7400 |
Hanari Carnes |
Rua do Pa?o, 67 |
Rio de Janeiro |
RJ |
05454-876 |
Brazil |
The table actually received by the user/customer "VINET" is:
"ORDERS" Table Received by User/CUSTOMER "VINET":
| ORDERID |
CUSTOMERID |
EMPLOYEEID |
ORDERDATE |
REQUIREDDATE |
SHIPPEDDATE |
SHIPVIA |
FREIGHT |
SHIPNAME |
SHIPADDRESS |
SHIPCITY |
SHIPREGION |
SHIPPOSTALCODE |
SHIPCOUNTRY |
| 10248 |
VINET |
5 |
04.07.1996 00:00:00.000 |
01.08.1996 00:00:00.000 |
16.07.1996 00:00:00.000 |
3 |
32.3800 |
Vins et alcools Chevalier |
59 rue de l'Abbaye |
Reims |
null |
51100 |
France |
| 10274 |
VINET |
6 |
06.08.1996 00:00:00.000 |
03.09.1996 00:00:00.000 |
16.08.1996 00:00:00.000 |
1 |
6.0100 |
Vins et alcools Chevalier |
59 rue de l'Abbaye |
Reims |
null |
51100 |
France |
| 10295 |
VINET |
2 |
02.09.1996 00:00:00.000 |
30.09.1996 00:00:00.000 |
10.09.1996 00:00:00.000 |
2 |
1.1500 |
Vins et alcools Chevalier |
59 rue de l'Abbaye |
Reims |
null |
51100 |
France |
The user/customer "VINET" has received the rows from the source
"ORDERS" table where the value in the "CUSTOMERID" field matched
"VINET". So, the "VINET" customer has received all the order data, and
ONLY the order data they should receive.
|
NOTE: When a new user access control file is placed in the DataSourceAccessControl directory
of the DataPortal server, it may be necessary to restart the server for the file to be regisered
|