Welcome!

Cloud Security Authors: Jose Diaz, Elizabeth White, Dan Sarel, Dana Gardner, Pat Romanski

Related Topics: Java IoT, Cloud Security

Java IoT: Article

SOA Focus - Web Services Security in Java EE

The present and future

In my earlier article "Moving to SOA in J2EE 1.4" published in the February issue of JDJ I introduced you to the new object distribution model based on Web Services that became available to Enterprise Java applications with the advent of Java EE 1.4. In this article I want to look at the security features available in Java EE SOA.

Here you'll get thehands-on knowledge of Web Services security in Java EE that we acquired when adding security support to OptimalJ-generated SOA applications. It's based on the J2EE 1.4 specification itself as well as on what is actually supported and it works in three major J2EE 1.4 application servers - JBoss 4.0.4, WebSphere 6.0.2.x, and WebLogic 9.1. You'll also learn about the new mandatory security features available to Web Service endpoints in Java EE 5.0.

Overview of Security in Java EE
Java EE comes with a mature security model that provides for the guaranteed features that have to be supported by all compliant application servers: authentication, authorization, confidentiality, and integrity. Though not yet required by the specification, most high-end application servers also support some sort of auditing of security-related events and non-repudiation - in other words a way of preventing an invocation sender from denying responsibility for the action - for communicating with Web Service components.

Authorization is based on logical security roles that are simple names defined by the component provider or application assembler in XML deployment descriptors. The code underneath all Java EE components - JSPs, servlets, and Enterprise JavaBeans - can be restricted declaratively based on logical security roles. In the case of EJBs, access can be limited on an Enterprise Bean's method level, whereas access to JSPs and servlets is enforced based on their URL and the HTTP method utilized (e.g. POST, GET, etc.). Besides declarative authorization, programmatic authorization is also supported so that a component's code can dynamically inquire whether the security context of the current user is associated with a particular logical security role and make a decision based on this analysis. How a given principal is actually mapped to a set of security roles depends on the Java EE notion of a security domain and the principal authentication mechanisms associated with the domain.

The confidentiality and integrity requirements are met at the transport layer with the help of the Secure Sockets Layer (SSL 3.0) protocol and the related IETF standard Transport Layer Security (TLS 1.0) protocol. For SSL and TLS only X.509 certificates are supported for authenticating principals. Kerberos-based authentication mechanisms in TLS are presently regarded as optional and aren't implemented by the application servers this article concentrates on.

The authentication security requirement is by far the most difficult to explain since it requires understanding the Java EE notion of a security domain, which is essentially a security mechanism used to authenticate the user. Here are the three arbitrary examples of security domains:

  1. A security domain where users are authenticated based on their X509 certificates presented during an SSL handshake. In this case the protocol used by the client for communicating with the application server can be HTTPS, IIOP/SSL, or JRMP/SSL.
  2. A security domain that uses the SRP protocol in communicating a user's name and password to the server in a secure fashion. Here the communications protocol that the client uses can be JRMP.
  3. A security domain that uses the HTTP Basic Authentication in communicating a user name and password to the server. Such a security domain will use either HTTP or HTTPS as the supported communications protocol.
Different security domains entail different types of principals for representing users. In the first security domain presented above, a principal will be derived from an X509 certificate or a certificate chain that the user presented during an SSL handshake. In the second example, a principal will be taken from the user name specified by the client. Here's a code sample taken from JBoss that shows how a certificate chain can be mapped to a principal:

public Principal toPrinicipal(
       X509Certificate[] certs) {
    Principal subject = certs[0].getSubjectDN();
    return subject;
}

Thus a security domain deals with a set of principals of a particular kind (e.g., based on X509 certificates, Kerberos tickets, plain user names, etc.). This set is termed a principal realm. For each principal realm, there's mapping between its principals and the one or more logical security roles that are used in Java EE applications. Application servers offer a plethora of ways to represent a principal realm, the most common of which are a local OS user registry, an LDAP server, an RDBMS schema, a Kerberos KDC, or a simple .properties files.

Modern Java EE application servers support different security domains or let users define their own based on the JAAS login modules available. See the sidebar "What is JAAS?" for more information on using JAAS in Java EE.

When a Java EE application is deployed, the deployer assigns the application modules to the security domains that have been configured in the targeted application server installation. Typically, the components of a Java EE module (an EJB .jar module or a Web .war module) are all assigned to the same security domain; some application servers let the components of a given module be assigned to different security domains, but this practice is generally avoided since it can easily lead to confusion. Java EE doesn't standardize the scope of a security domain and leaves it up to vendors. At the moment all high-end application servers let a security domain span multiple application server installations (which typically form a cluster).

Security Context Propagation and Single Sign-on
A Java EE application server features three different containers (there's also an applet container that is typically embodied by a Web browser program): a Web Container that hosts JSPs and servlet components, an EJB Container where EJB components are deployed, and an Application client container (see the sidebar "Application client containers" for more details on this concept). EJB and Web Containers are typically collocated, and components running in the Web Container can access EJBs of the corresponding EJB container. Figure 1 depicts the relationships between the three containers and various ways in which a client can access a Java EE application. For simplicity's sake I depicted all the enterprise components as running in the same application server on a single node, but it doesn't have to be this way; modern application servers let them be distributed among multiple nodes.

The following are the two typical usage scenarios shown in Figure 1 involving access to an enterprise Java application:

1.  A user accesses a JSP or a servlet component deployed in a Web Container with a Web browser. He authenticates himself to the Web Container using either 1) a username and password that his Web browser prompts him to enter (Basic HTTP Authentication) or 2) an X509 certificate that the browser lets the user choose from a pre-installed set of user certificates. The servlet component carries out the presentation-related activities and invokes an EJB Session component (using a local invocation in the same JVM or RMI-based protocol) to carry out the business logic-related tasks. To fulfill the business logic task the session bean can invoke an Entity EJB, call on an EIS with a help of a JCA resource adapter, or carry out some JDBC-based data access. After completing its work, the session component returns the processing results to the servlet component, which in turn renders them to the user in HTML.

The user can then invoke the servlet or some Web component or JSP again.The application server maintains a session with the user's browser and doesn't require re-authentication.

2.  A Java client application uses either RMI-IIOP or RMI-JRPM to access the server. The application prompts the user for a name and credentials and authenticates itself to the server with the help of JAAS and one or more JAAS the login modules provided by the vendor. For RMI-IIOP, the CSIv2 SAS protocol will most likely be used to communicate authentication data to the server. The client application accesses an EJB deployed in an EJB Container. Like the first scenario, the invoked EJB can call other EJBs or enterprise services.

The client application then goes on to invoke another EJB without having to re-authenticate the user. Listing 1 is an example of such a client application for WebSphere.

A lot can be gathered from these scenarios and from Figure 1.

First, they show that external clients can access components running in the WEB container by using either HTTP or HTTPS and components hosted in the EJB container with RMI-IIOP or RMI-JRMP. They also show that components can use 1) local invocations in the same JVM, 2) RMI-IIOP, or 3) RMI-JRMP for inter-component communication. Which of the three is used depends on the vendor and the configuration of the application server.

Second, in both examples the clients authenticated themselves to the container before being able to use a component, and the application server propagated the established client security context when the component invoked the other EJBs.

Third, the samples demonstrate Java EE support for single sign-on (frequently abbreviated as SSO), thanks to which needless re-authentications are avoided for subsequent application are avoided server access. The propagation of the client security context and single sign-on are two important security characteristics of Java EE.

Application servers let the client security context be propagated if local JVM invocations, RMI-IIOP, or RMI-JRMP are used as inter-component communication transports and the component targeted belongs to the same security domain. A client security context typically consists of a principal object (whose type depends on the security domain of the Java EE application) and zero or more associated credentials presented during authentication. Java EE specifies RMI-IIOP and the accompanying CSIv2 OMG spec as the only interoperable way of propagating a client security context that must be understood and supported by all compliant application servers (a security context propagated with RMI-JRMP is only meaningful if the targeted component runs in an application server from the same vendor). Using CORBA-related standards for interoperability among disparate application servers reflects the CORBA-oriented nature of the early Java EE specifications that holds to this day.


More Stories By Andrei Iltchenko

Andrei Iltchenko is a development lead at Compuware Corporation where he works on the MDA product OptimalJ and is responsible for the business logic area of OptimalJ-generated J2EE applications. He is also a Sun certified Java developer for Java Web Services, a Sun Certified Business Component Developer, a Sun Certified Developer, and a Sun Certified Programmer.

Comments (4) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Andrei Iltchenko 08/17/06 01:36:29 PM EDT

Gerald, thank you very much for your words and for the correction you found! I am glad you found the article of use.

Gerald Loeffler 07/26/06 06:57:59 AM EDT

Brilliant article - precise, accurate and comprehensive, including valuable real-world information that goes beyond "spec knowledge". A pleaseure to read!

cheers,
gerald

P.S.: there is a bug in listing 2: the variable to downcast should be "bean1Stub" and not "port".

http://www.gerald-loeffler.net

SYS-CON Australia News Desk 07/25/06 01:53:42 PM EDT

In my earlier article 'Moving to SOA in J2EE 1.4' published in the February issue of JDJ I introduced you to the new object distribution model based on Web Services that became available to Enterprise Java applications with the advent of Java EE 1.4. In this article I want to look at the security features available in Java EE SOA.

JDJ News Desk 07/25/06 01:33:45 PM EDT

In my earlier article 'Moving to SOA in J2EE 1.4' published in the February issue of JDJ I introduced you to the new object distribution model based on Web Services that became available to Enterprise Java applications with the advent of Java EE 1.4. In this article I want to look at the security features available in Java EE SOA.

@ThingsExpo Stories
In his session at @ThingsExpo, Chris Klein, CEO and Co-founder of Rachio, will discuss next generation communities that are using IoT to create more sustainable, intelligent communities. One example is Sterling Ranch, a 10,000 home development that – with the help of Siemens – will integrate IoT technology into the community to provide residents with energy and water savings as well as intelligent security. Everything from stop lights to sprinkler systems to building infrastructures will run ef...
Manufacturers are embracing the Industrial Internet the same way consumers are leveraging Fitbits – to improve overall health and wellness. Both can provide consistent measurement, visibility, and suggest performance improvements customized to help reach goals. Fitbit users can view real-time data and make adjustments to increase their activity. In his session at @ThingsExpo, Mark Bernardo Professional Services Leader, Americas, at GE Digital, will discuss how leveraging the Industrial Interne...
The increasing popularity of the Internet of Things necessitates that our physical and cognitive relationship with wearable technology will change rapidly in the near future. This advent means logging has become a thing of the past. Before, it was on us to track our own data, but now that data is automatically available. What does this mean for mHealth and the "connected" body? In her session at @ThingsExpo, Lisa Calkins, CEO and co-founder of Amadeus Consulting, will discuss the impact of wea...
Whether your IoT service is connecting cars, homes, appliances, wearable, cameras or other devices, one question hangs in the balance – how do you actually make money from this service? The ability to turn your IoT service into profit requires the ability to create a monetization strategy that is flexible, scalable and working for you in real-time. It must be a transparent, smoothly implemented strategy that all stakeholders – from customers to the board – will be able to understand and comprehe...
Increasing IoT connectivity is forcing enterprises to find elegant solutions to organize and visualize all incoming data from these connected devices with re-configurable dashboard widgets to effectively allow rapid decision-making for everything from immediate actions in tactical situations to strategic analysis and reporting. In his session at 18th Cloud Expo, Shikhir Singh, Senior Developer Relations Manager at Sencha, will discuss how to create HTML5 dashboards that interact with IoT devic...
Artificial Intelligence has the potential to massively disrupt IoT. In his session at 18th Cloud Expo, AJ Abdallat, CEO of Beyond AI, will discuss what the five main drivers are in Artificial Intelligence that could shape the future of the Internet of Things. AJ Abdallat is CEO of Beyond AI. He has over 20 years of management experience in the fields of artificial intelligence, sensors, instruments, devices and software for telecommunications, life sciences, environmental monitoring, process...
The demand for organizations to expand their infrastructure to multiple IT environments like the cloud, on-premise, mobile, bring your own device (BYOD) and the Internet of Things (IoT) continues to grow. As this hybrid infrastructure increases, the challenge to monitor the security of these systems increases in volume and complexity. In his session at 18th Cloud Expo, Stephen Coty, Chief Security Evangelist at Alert Logic, will show how properly configured and managed security architecture can...
We’ve worked with dozens of early adopters across numerous industries and will debunk common misperceptions, which starts with understanding that many of the connected products we’ll use over the next 5 years are already products, they’re just not yet connected. With an IoT product, time-in-market provides much more essential feedback than ever before. Innovation comes from what you do with the data that the connected product provides in order to enhance the customer experience and optimize busi...
A critical component of any IoT project is the back-end systems that capture data from remote IoT devices and structure it in a way to answer useful questions. Traditional data warehouse and analytical systems are mature technologies that can be used to handle large data sets, but they are not well suited to many IoT-scale products and the need for real-time insights. At Fuze, we have developed a backend platform as part of our mobility-oriented cloud service that uses Big Data-based approache...
SYS-CON Events announced today that Ericsson has been named “Gold Sponsor” of SYS-CON's @ThingsExpo, which will take place on June 7-9, 2016, at the Javits Center in New York, New York. Ericsson is a world leader in the rapidly changing environment of communications technology – providing equipment, software and services to enable transformation through mobility. Some 40 percent of global mobile traffic runs through networks we have supplied. More than 1 billion subscribers around the world re...
SYS-CON Events announced today that Peak 10, Inc., a national IT infrastructure and cloud services provider, will exhibit at SYS-CON's 18th International Cloud Expo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. Peak 10 provides reliable, tailored data center and network services, cloud and managed services. Its solutions are designed to scale and adapt to customers’ changing business needs, enabling them to lower costs, improve performance and focus inter...
The IoTs will challenge the status quo of how IT and development organizations operate. Or will it? Certainly the fog layer of IoT requires special insights about data ontology, security and transactional integrity. But the developmental challenges are the same: People, Process and Platform. In his session at @ThingsExpo, Craig Sproule, CEO of Metavine, will demonstrate how to move beyond today's coding paradigm and share the must-have mindsets for removing complexity from the development proc...
We're entering the post-smartphone era, where wearable gadgets from watches and fitness bands to glasses and health aids will power the next technological revolution. With mass adoption of wearable devices comes a new data ecosystem that must be protected. Wearables open new pathways that facilitate the tracking, sharing and storing of consumers’ personal health, location and daily activity data. Consumers have some idea of the data these devices capture, but most don’t realize how revealing and...
trust and privacy in their ecosystem. Assurance and protection of device identity, secure data encryption and authentication are the key security challenges organizations are trying to address when integrating IoT devices. This holds true for IoT applications in a wide range of industries, for example, healthcare, consumer devices, and manufacturing. In his session at @ThingsExpo, Lancen LaChance, vice president of product management, IoT solutions at GlobalSign, will teach IoT developers how t...
There is an ever-growing explosion of new devices that are connected to the Internet using “cloud” solutions. This rapid growth is creating a massive new demand for efficient access to data. And it’s not just about connecting to that data anymore. This new demand is bringing new issues and challenges and it is important for companies to scale for the coming growth. And with that scaling comes the need for greater security, gathering and data analysis, storage, connectivity and, of course, the...
So, you bought into the current machine learning craze and went on to collect millions/billions of records from this promising new data source. Now, what do you do with them? Too often, the abundance of data quickly turns into an abundance of problems. How do you extract that "magic essence" from your data without falling into the common pitfalls? In her session at @ThingsExpo, Natalia Ponomareva, Software Engineer at Google, will provide tips on how to be successful in large scale machine lear...
Digital payments using wearable devices such as smart watches, fitness trackers, and payment wristbands are an increasing area of focus for industry participants, and consumer acceptance from early trials and deployments has encouraged some of the biggest names in technology and banking to continue their push to drive growth in this nascent market. Wearable payment systems may utilize near field communication (NFC), radio frequency identification (RFID), or quick response (QR) codes and barcodes...
The IETF draft standard for M2M certificates is a security solution specifically designed for the demanding needs of IoT/M2M applications. In his session at @ThingsExpo, Brian Romansky, VP of Strategic Technology at TrustPoint Innovation, will explain how M2M certificates can efficiently enable confidentiality, integrity, and authenticity on highly constrained devices.
You think you know what’s in your data. But do you? Most organizations are now aware of the business intelligence represented by their data. Data science stands to take this to a level you never thought of – literally. The techniques of data science, when used with the capabilities of Big Data technologies, can make connections you had not yet imagined, helping you discover new insights and ask new questions of your data. In his session at @ThingsExpo, Sarbjit Sarkaria, data science team lead ...
You deployed your app with the Bluemix PaaS and it's gaining some serious traction, so it's time to make some tweaks. Did you design your application in a way that it can scale in the cloud? Were you even thinking about the cloud when you built the app? If not, chances are your app is going to break. Check out this webcast to learn various techniques for designing applications that will scale successfully in Bluemix, for the confidence you need to take your apps to the next level and beyond.