
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