an authorization server that it knows best to find the answer. In our approach, we use
recursive query to query the local authorization server and use iterative query for the
local authorization server to query other authorization servers. Furthermore, a local
cache is used by each authorization server for recording the addresses of other au-
thorization servers for future reference to expedite authorization queries.
During authorization, an authorization client first sends its request to the local au-
thorization server of its own organization unit. If the authorization server can resolve
the request, it will generate the result and send it back to its client. This is realized by
checking OU information in the authorization request. If the OU name matches the
authorization server’s OU name in the request message, it means the authorization
server is capable to resolve the query. If the authorization server can not resolve the
query, it checks its cache first to see whether it has the address of the destination
authorization server. If it is found successfully, it would send the query to the au-
thorization server directly based on the address. On the other hand, if it is not found,
it would send the request to its parent authorization server until either the request can
be solved or it reaches the root authorization node. Upon the request reaching the root
authorization server, the root server sends the authorization request to its child au-
thorization server node according to the OU name in the authorization request until
the authorization server is located. Then the authorization server will solve the query
and send the authorization result back to the local authorization server. The local
authorization server will correspondingly forward the authorization result to the
original client. During the process, the local cache of the authorization server will
record the addresses of the authorization servers it visited which are not available in
the cache.
3.3 Message format
There are two types of query messages in the authorization process: recursive and
iterative messages. Each query message includes two parts: header and individual
queries. The header of query messages includes the Query_type, User_info,
OU_name, and the Number of Queries. The Query_type is either “R” for recursive
query or “I” for iterative query. User_info attribute is the global identity (GID) of the
authorization client. OU_name represents the name of the remote organization unit
with required resources. In one query message, it can contain multiple individual
queries, but the multiple individual queries must be querying the same authorization
server or organization unit. Each individual query includes Host_name, Re-
source_name, and requested Access_right for the remote authorization server. Three
possible result messages for an authorization query are: Final query result, Referred
query result with referred authorization server address, and Query failure. Each query
result message also includes two parts: header and result part. The header of the result
message includes the general information of the corresponding query message, which
includes Code, Result_type/Failure_code, User_info, OU_name, and Number of
Queries. The Code attribute in the header represents the query status. We use “0” to
represent query success, and “1” query failure.
If the query status is a success, the Result_type attribute represents whether the re-
sult is the final query result or a referred query result with a referred authorization
97