Chapter 1. Introduction

JBoss Negotiation is a component of JBoss Enterprise Application Platform, which provides the SPNEGO-based (Simple and Protected Negotiation) SSO (Single Sign On) mechanism.
JBoss Negotiation is located in $JBOSS_HOME/jboss-as/common/lib/jboss-negotiation.jar
SPNEGO is a Generic Security Services Application Program Interface (GSSAPI) mechanism for client-server authentication. It allows silent authentication to remote systems and access to security services. It can also delegate user credentials to a remote system so the remote system can contact further systems on behalf of the user.

1.1. SPNEGO Authentication Process

Generally, the client sends the input credentials to the server and the login module of the server verifies the credentials against its credential store when a user is authenticating to a server. SPNEGO authentication differs in several aspects:
  1. The application server authenticates itself against the KDC and obtains a ticket before it can authenticate the user.
  2. Only then, the server prompts the client to authenticate. The client responds with a SPNEGO token and the server uses its own ticket to decode client's ticket and then responds to the client.
  3. A client can request the server to authenticate itself if required.
  4. A client can delegate its credentials to the server so that the server can call other systems on behalf of the calling client.
JBoss Negotiation is typically useful in the following scenario:
  • The user logs into a desktop computer with a log in that is governed by an Active Directory domain or FreeIPA.
  • The user launches a web browser and accesses a web application that uses JBoss Negotiation.
  • The web browser transfers the desktop credentials to the web application.

Important

You can configure Active Directory and FreeIPA to use JBoss Negotiation (refer to Chapter 6, Configuring FreeIPA and Chapter 5, Configuring Microsoft Active Directory ).