In today's digital world, properly authenticating and authorizing users of heterogenous application platforms is a common challenge. By integrating service-oriented architecture (SOA) according to standards, you enable collaboration and communication among services and applications. However, all that software requires application-level security so that only preauthorized users can access the applications. Through centralization of identity and access management within enterprises, you can control what resources are accessed when and by whom. Part 1 of this series shows how to authorize users for a fictional health-care insurance company, EB Health, with Sun Java System Access Manager (henceforth, Access Manager). Here in Part 2, you learn how to satisfy some of the most common yet complex enterprise deployment and quality requirements, again with Access Manager and through the EB Health example. This part assumes the following:
Contents
Requirements
As a result of acquisitions, EB Health now owns many multiplatform applications written in the Java or .NET programming language and must build a Single Sign-On (SSO) strategy that caters to the platforms EB Health supports. Here are the requirements:
Read on for the details of the EB Health solution and the design that fosters the required capabilities. The solution builds on top of the concepts described in Part 1. Architecture
The overall architecture is the same as that for Part 1. Thanks to Access Manager Policy Agents, you can secure applications on platforms such as .NET by installing a Policy Agent on Microsoft Internet Information Services (IIS) Web server. Afterward, the IIS agent achieves SSO by authenticating users at the centralized Access Manager instance and allowing users access to the secured applications. Access Manager Policy Agents are supported on most industry-standard Web and Java EE containers. Figure 1 shows the architecture with updated Java and non-Java application platforms.
You can configure the Policy Agents for IIS and Apache Web servers in either of these two modes:
Subsequently, SSO becomes a reality across multiple platforms, propagating user information to the container in which the users are executing. Once a user authenticates and is authorized to access the URL in question, application components created with JavaServer Pages or Active Server Pages technology can extract the SSO session token to further invoke Access Manager and perform additional authorization calls. See Part 1 for details. Evaluation of Bulk Policy Through Resource Hierarchy
This section elaborates on how to satisfy the performance requirements for applications that secure pages with many fields on a single page. The development of fine-grained authorization discussed in Part 1 is through the Access Manager SDK, which evaluates policies for the page's resources. When multiple objects require authorization, multiple calls are made to Access Manager by the SDK. To alleviate performance concerns about applications that secure many resources, EB Health uses a few Access Manager server-side APIs to build a hierarchy-based resource model that represents an application's resources. Figure 2 illustrates the design of the resource hierarchy.
Here, instead of defining a single resource, a string defines a parent and children by delimiting the resource hierarchy with forward slashes. For example:
Here's another example:
To define a resource, EB Health follows the procedure described in Part 1 (see Figure 3), but adheres to the new naming convention, that is, denotes the resource hierarchy with forward slashes.
The resource model now requires a service on the server side, where EB Health deployed Access Manager to invoke the API for evaluating policies. Bottom line: EB Health must invoke the service for the parent resource and acquire the authorization level for the parent and its resources. EB Health adopts the Transfer Object pattern, which enhances performance by making a single invocation instead of multiple ones across the network. JAX-WS now comes into play. The service encapsulates the Access Manager API calls by exposing a single Web-service endpoint to its clients and thus highlights itself as a JAX-WS service. Interoperable Authorization Service
The design of the authorization service fulfills EB Health's last requirement: Institute fine-grained authorization to non-Java clients by creating an interoperable Web service. The Web-service endpoint serves as an interoperable service that EB Health can invoke with Simple Object Access Protocol (SOAP) over HTTPS from Java and .NET applications. See Figure 4 for the architecture.
On the client side, both the Java and .NET applications are protected by the Access Manager Policy Agent to secure access and to ensure the validity of the SSO token. That translates to an enforcement of the policy on the URL level and an SSO architecture across application platforms. The clients achieve fine-grained authorization by invoking the Web service through their Web-service APIs. EB Health implements the authorization service as a JAX-WS Web-service endpoint that runs in the same container as Access Manager to make use of the server-side Access Manager APIs. The Web service evaluates the policy and returns the decisionsaccess levelsto the requestor (application). Consider this examplea method signature of the Web service:
The method involves three parameters:
Development, Deployment, and Testing of Service Endpoint With NetBeans IDE
EB Health develops the Web service in the NetBeans IDE, which contains an intuitive interface for building Java applications and Web services alike. A configuration tab is available for plugging into Web containers, resulting in a fast deployment. Configuration and Deployment
This code fragment shows the server-side components that evaluate policies:
By way of explanation
Testing To generate client stubs within the IDE, choose New > Web Service Client. A window is then displayed in which to specify the location of the Web service endpoint. See Figure 6.
With the location of the Web Services Description Language (WSDL), the NetBeans IDE can obtain the information on the Web service and generate the appropriate client artifacts. This Java-client snippet invokes the Web service within an application:
Assuming that the application is protected by a Policy Agent, the The following code segment is an equivalent C# for invoking the Web service:
For details on Web services and .NET framework, see the References section below. To learn about method signatures in the Web service, see Sun Java System Access Manager 7.1 API. Summary
The EB Health example demonstrates how you can extend Access Manager to meet some of the common enterprise requirements for access management. The Policy Agent's architecture caters to many industry-standard application servers, offering authentication, authorization, and SSO capabilities. In addition, because of its APIs and configurable service layer, Access Manager is ideal for achieving fine-grained authorization for both Java and non-Java applications. Acknowledgments
Our appreciation to Bartosz Adamczyk, Dilli Dorai, Ramesh Nagappan, and Pat Patterson at Sun for their prompt reviews and excellent comments. References
|
| |||||||||||||||||||||||||||||||
|
| ||||||||||||