Showing posts with label SPNEGO. Show all posts
Showing posts with label SPNEGO. Show all posts

Thursday, December 15, 2016

Centrify and Oracle Demystified

Background
The article below, is a modified repost of a very popular response from the Centrify community.  We are often asked by prospects or customers how Centrify fits with Oracle.  Oracle means a lot of things to different people, I think this article does a good job at clarifying it.


I have ORACLE {x.y.z} and I want to know how Centrify can help

"Oracle" means a lot of things to different people because of the large portfolio of products:
  • Oracle Solaris - supported OS for the Centrify Standard, Enterprise and Express versions
  • Oracle Linux - supported OS for Centrify Standard, Enterprise and Express versions
  • Oracle WebLogic - Centrify provides a Java SSO Plugin that provides SPNEGO leveraging adclient
  • Oracle Database - Centrify provides the ability to use externally identified users (in AD via adclient with PAM or Kerberos)
  • Oracle Database - Centrify provides shared account password management for Oracle database acounts
  • Oracle e-Business Suite - Centrify provides provide SAML SSO integration with Identity Service

Let's run through these, (big caveat, I am not an Oracle expert - everything I'll explain will be from an Identity, Access Control and Security context)

Customers and prospects come to us because they have these kinds of challenges and requirements:

a) OS-level:  They want to increase accountability and provide Oracle DBAs with Access and Privilege Management rules:
Given that identity is Centralized in AD, our customers can group systems Oracle Database systems in a zone, child zone or computer role and assign roles like this one:

The management of these assignments is made easy with AD group management, this means that Oracle DBAs will be only able to sign-in via SSH, run the commands outlined (not more) and they'll be able to do so without impacting their productivity.


Users sign-in with SSO or via password and can perform their jobs like here.
[lisa.simpson@engcen7 ~]$ dzdo -l
AD Password:
User lisa.simpson may run the following commands on this host:
    (root) service oracle-xe*
    (oracle) sqlplus *
    (root) su oracle
    (root) su - oracle
    (root) adflush
[lisa.simpson@engcen7 ~]$ dzdo su - oracle
Last login: Thu Aug 20 10:50:03 PDT 2015
-bash-4.2$ exit
logout
[lisa.simpson@engcen7 ~]$ dzdo service oracle-xe restart
Restarting oracle-xe (via systemctl):                      [  OK  ]
[lisa.simpson@engcen7 ~]$ dzdo vi /etc/passwd
Sorry, user lisa.simpson is not allowed to execute '/usr/bin/vi /etc/passwd' as root on engcen7.centrify.vms.

With no need to deal with knowing PASSWORDS.

They can get also multi-factor authentication, session capture and replay of what a person does in a system, as well as Server and Domain Isolation using IPSEC.

b) They want to Centralize the administration and provide authentication services to Oracle tools and applications: 
First, it's good to know that Oracle supports two types of users(*).
  • Users identified within Oracle  (they are stored and authenticated within the Oracle database) and
  • Externally identified users (these are OS-authenticated users)
(*) I know, this is simplistic.  They offer way much more than that.

The role of Centrify in UNIX OS Authentiation
Centrify offers identity services, authentication and authorization using Active Directory.  We use UNIX frameworks like  Pluggable Authentication Modules (PAM) and Name Server Switch (NSS).  We also enable Kerberos in an over simplistic way, and maintain the system keytab, krb5.conf file based on the dynamically changing AD environment.  Most importantly, we make sure that it will work well with Microsoft Active Directory and Microsoft's Kerberos extensions (MS-KILE)

Oracle natively supports OS Authentication for externally identified users (in the case of modern UNIX/Linux == PAM or SSO via Kerberos).

Example # 2, logging in to Oracle tools
a) for an internal user:

$ sqlplus
SQL*Plus: Release 11.2.0.2.0 Production on Thu Jan 9 10:02:25 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: sysdba
Enter password:

SQL*Plus: Release 11.2.0.2.0 Production on Thu Jan 9 10:03:01 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

b) for an externally identified user (this can be a centrified ad user, a local user, ldap or even NIS user):

$ sqlplus /nolog
SQL*Plus: Release 11.2.0.2.0 Production on Thu Jan 9 10:08:42 2014

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL>
In this sequence, Oracle leverages the OS authentication and since I had a session with a valid user, then I effectively I'm not prompted.

c) They may have Apps that use Oracle WebLogic and want to extend SSO
We provide a J2EE SSO Plugin for this.
Please select what type of J2EE server to configure:
[0] Tomcat.
[1] JBoss.
[2] WebLogic Server.
[3] WebSphere Application Server.
[4] Exit this configuration program.
This entry explains all about this:
http://community.centrify.com/t5/Get-Started-How-To-s/HOWTO-Install-configure-and-test-the-Centrify-Java-SSO-Module/ba-p/19185
This plugin for SPNEGO is slowly being phased for SAML support, given that the Java platforms support it.

HOWEVER..... what organizations are looking to do the most is this:

d) They want to provide AD users for SSO in their oracle database-based applications
 This is where the devil meets the details. Here are some of them:
  • Oracle costs:  Many organizations are hopeful that they can do SSO without investing in expensive oracle tools, but that's not the case.  Traditionally Oracle required the Advanced Security Option to even do Kerberos, they later stated that ASO was free, but then there was another component (Enterprise User Security) required.
  • Oracle guidance:  Oracle recommends internally identified users as their best practice.
  • Advent of Federation:  This will help a lot and we provide a "behind-kicking" solution with Centrify Identity Service
But the biggest of all devils is: how the application is designed. If the application is designed and has logic based on users in a table, this becomes a bit of a challenge.  Ideally developers should move to support Kerberos or Federated authentication, but unfortunately (and just like many infrastructure folks) they are in the business of creating complexity rather than eliminating it.

e) They want to manage shared credentials from Oracle Databases
Customers may want to manage the password lifecycle of
  • Request/Approve - we provide a built-in workflow engine or they can use ServiceNow
  • Check-out/Check-in - the process or retrieving or returning the password to the vault (can be time based)
  • Rotate/Update - password rotation based on policy or upon check-in automatically
  • Enforce Policy (e.g. MFA or others) and review history
for the passwords of shared accounts from Oracle Databases.

For that, with our Centrify Privilege Service, we provide shared account password management for SQL Server and Oracle Databases (plus more to come!)

Docs: https://docs.centrify.com/en/centrify/serverref/index.html?version=1481662594#page/cloudhelp%2Fsvr_mgr_oracle.html%23ww1119449
SAPM for Oracle is available for versions 11g and 12c

f) They have Oracle e-Business Suite and want quick, simple and robust SAML federation
Customers want more than what traditional federation solutions can provide, with Identity Service we provide:
  • More than 3,000 turnkey web or mobile apps
  • Self-service for applications, devices, password reset and OATH tokens
  • Built-in Policy and Multi-factor authentication (modern/traditional via RADIUS)
  • Multiple identity sources including AD, LDAP, Google Directory, Social Directory or Federation
  • Workflow and Approvals
  • Mobile device, application and configuration management
  • The ability to publish on-premise applications without the need of VPN access
and most importantly, you can get going in minutes/hours instead of days.

Onboarding EBS is a simple exercise.

Bottom-line:
  • Centrify will help you with your Oracle Linux and Solaris systems, integrate them to AD, provide privileged user management, session capture and replay, IPSec-based isolation and will do Shared Account Password Management for those platforms.  Will provide the best AD integration and enable Kerberos like plug-n-play.
  • The bullet above will help you with all Oracle "externally identified" users for tools and apps (via PAM or Kerberos).  Centrify Server Suite will not help you with users inside Oracle databases, for this you will need privilege Service and that's for shared passwords.
  • We also provide an SPNEGO plugin for SSO for Oracle WebLogic  (but ideally you'll use SAML moving forward)
  • When it relates to Oracle database based apps, the details are very important (cost, application, guidance and federation).
  • Shared Account Password management for Oracle 11g and 12c accounts, our Privilege Service can provide those capabilities.
  • If you have Oracle EBS, you can get all the benefits of Identity Service plus the ability to provide turnkey Federation/SSO

Wednesday, December 16, 2015

Centrify DirectControl for UNIX/Linux/Mac and servicePrincipalNames

Background
IT Ops often ask themselves about servicePrincipalNames in the context of Kerberos and ActiveDirectory.  When a system is Centrified, part of the process is to populate some of these entries to facilitate certain services to "just work";  SPNs play a part on that equation;  however there may be conflicts as well;  many organizations use Centrify software to simplify and secure Hadoop implementations at the OS-layer;  there may be conflicts with other Kerberos-enabled apps as well.  This quick article consolidates the questions that we commonly get as it relates to SPNs and Centrify DirectControl.

What is a Kerberos SPN?
ServicePrincipalName is the name by which a Kerberos client identifies an instance of a service.  The simple format entry in Active Directory looks like this:  service/realm:PORT.  E.g. HTTP/host.example.com

What does this have to do with Centrify?
Centrify uses Kerberos for authentication against Active Directory.  When you join a UNIX, Linux or Mac system into Active Directory using Centrify, there are a set of ServicePrincipalNames defined for the system by default.  Some of these are (varies between platforms). 

afpserver:  for an Apple file server
cifs: for a Samba file server
ftp: for a Kerberos-enabled ftp server
host: for host services like SSHD
http: for Web Servers that use SPNEGO
ipp: for web-based printing
nfs: for Kerberos-enabled NFS

How commonly used are this servicePrincipalNames?
In an Active Directory environment, because it uses Kerberos as the authentication protocol, you interact with Kerberos-enabled services all the time.  As an example, right now, you can connect to a Centrified system using ssh.  When you do, you are getting a service ticket for the HOST service for that system.  You can verify this with the klist command on Windows or in UNIX.    For example:  Diana (dwirth) connects to two centrified systems using PuTTY (engcen6 and linux2); then she opens PowerShell and verifies that she has a service ticket.
Windows PowerShell
Copyright (C) 2014 Microsoft Corporation. All rights reserved.

PS C:\Users\dwirth> klist | sls host

    Server: host/engcen6.centrify.vms @ CENTRIFY.VMS
    Server: host/linux2.centrify.vms @ CENTRIFY.VMS

When does the service registration happen, when I install your CentrifyDC package?
No.  Remember that installing our packages only will place our binaries in your system.  These changes happen when you run the adjoin command OR on the AD side, when you use the "Prepare UNIX computer" option in Centrify Access Manager or when you use the New-CdmManagedComputer PowerShell commandlet.
Access Manager - Precreate SPNs.png
You have a chance to add/remove or modify SPNs during the Pre-Create stage.

Why do you do this?
To make sure that certain common services that rely on Kerberos just work out of the box.

Can I control the behavior of the default SPNs?
Yes.  The adclient.krb5.service.principals parameter takes care of what SPNs are set up in the computer’s AD object and its corresponding system keytab entries. All you need to do is enable the parameter, PRIOR to running adjoin to join AD and only the entries defined will be created by default.  From the Centrify UNIX configuration guide:

"adclient.krb5.service.principals

This configuration parameter specifies additional service principals 
for entries in the Kerberos key table. The key table is populated by 
default with the service principals host, http, cifs, and nfs.
This parameter's value must be one or more principal service names, 
separated by a space or by a comma. For example:

adclient.krb5.service.principals: http ftp cifs nfs

If this parameter is not defined in the configuration file, no 
additional principal names are added to the Kerberos key table."

You can also leverage the Precrate option in Access Manager or the New-CdmManagedComputer PowerShell commandlet.

How can I see the existing registered SPNs for a Centrified system?
On UNIX/Linux/Mac CLI:   Use the “adinfo –C” command from the CLI. 
  1. Make sure you have a current Kerberos ticket. If you get a "cannot bind" error, just kinit and reauthenticate against AD.
$ adinfo -C
Computer Account Diagnostics
  Joined as: engcen6
  Trusted for Delegation: true
  Use DES Key Only: false
  Run adinfo as root to examine local key info
  Key Version: 11   (local key version unavailable)
  Service Principal Names: myservice/engcen6
                           myservice/engcen6.centrify.vms
                           nfs/engcen6.centrify.vms
                           nfs/engcen6
                           ipp/engcen6.centrify.vms
                           ipp/engcen6
                           http/engcen6.centrify.vms
                           http/engcen6
                           host/engcen6.centrify.vms
                           host/engcen6
                           ftp/engcen6.centrify.vms
                           ftp/engcen6
                           cifs/engcen6.centrify.vms
                           cifs/engcen6
                           afpserver/engcen6.centrify.vms
                           afpserver/engcen6

Supported Encryption Type(s): RC4-HMAC
                              AES128-CTS-HMAC-SHA1-96
                              AES256-CTS-HMAC-SHA1-96

Operating System Version: 6.1:6.5 (Final)
From Windows using the CLI:  Use the “setspn.exe –L <hostname>”

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\>setspn -L engcen6
Registered ServicePrincipalNames for CN=engcen6,OU=Servers,OU=centrifyse,DC=cent
rify,DC=vms:
        myservice/engcen6
        myservice/engcen6.centrify.vms
        nfs/engcen6.centrify.vms
        nfs/engcen6
        ipp/engcen6.centrify.vms
        ipp/engcen6
        http/engcen6.centrify.vms
        http/engcen6
        host/engcen6.centrify.vms
        host/engcen6
        ftp/engcen6.centrify.vms
        ftp/engcen6
        cifs/engcen6.centrify.vms
        cifs/engcen6
        afpserver/engcen6.centrify.vms
        afpserver/engcen6
From Windows Using Active Directory Users and Computers

  1. Make sure that the Advanced Features check is set in the View menu.
  2. Find the computer object > right click > Properties > Attribute Editor
  3. In the Attribute Editor, find the servicePrincipalName field.
    ADUC - SPNs.png

What if I need to change the SPNs for an existing system?
There are several ways to do it.  The easiest way to do it is using adkeytab; however if you want this to happen automatically during join, you have to modify the configuration file.
You can also use adleave/adjoin, however this has the drawback that the agent will be disabled temporarily.

Using adkeytab 
To add an SPN to the computer
Example:  adding the oracle service to the shortname engcen6 – notice that you need to be root or elevate to change the system keytab, plus you'll need an AD user that can modify the computer object in AD.
  1. Run “dzdo adkeytab --addspn --principal [principal in correct format] --user [ad-user-that-can-modify-computer-object] --verbose”
    $ dzdo adkeytab --addspn --principal oracle/engcen6 --user dwirth --verbose
    Active Directory Password:
    ADKeyTab version: CentrifyDC 5.2.0-218
    Options
    -------
    use machine ccache: no
    domain: centrify.vms
    server: null
    user: dwirth
    container: null
    account: null
    trust: no
    des: no
    dwirth@CENTRIFY.VMS's password:
    Attempting bind to centrify.vms site:Demo-Network server:dc.centrify.vms: ccache:MEMORY:0x5666c0
    Bind successful to server dc.centrify.vms
    Searching for AD Object: filter = (samAccountName=engcen6$), root = DC=centrify,DC=vms
    AD Object found: CN=engcen6,OU=Servers,OU=centrifyse,DC=centrify,DC=vms
    Key Version = 11
    Success: Add SPNs: Default Key Tab
    
  2. Verify the new SPN with “adinfo –C”
    $ adinfo -C | grep oracle
      Service Principal Names: oracle/engcen6
    
  3. Optional:  List the contents of the system keytab
    dzdo /usr/share/centrifydc/kerberos/bin/klist -kt /etc/krb5.keytab | grep oracle
      11 12/16/15 07:27:47 oracle/engcen6@CENTRIFY.VMS
    [output truncated]
    
    The KVNO goes up, and the new entry is present.
To remove an SPN from the computer (example:  removing the entry I added above to the same system)
  1. Run “dzdo adkeytab --delspn --principal oracle/engcen6 --user [ad-user-that-can-modify-computer-object] --verbose”
    $ dzdo adkeytab --delspn --principal oracle/engcen6 --user dwirth --verbose
    ADKeyTab version: CentrifyDC 5.2.0-218
    Options
    -------
    use machine ccache: no
    domain: centrify.vms
    server: null
    user: dwirth
    container: null
    account: null
    trust: no
    des: no
    dwirth@CENTRIFY.VMS's password:
    Attempting bind to centrify.vms site:Demo-Network server:dc.centrify.vms: ccache:MEMORY:0x5666c0
    Bind successful to server dc.centrify.vms
    Searching for AD Object: filter = (samAccountName=engcen6$), root = DC=centrify,DC=vms
    AD Object found: CN=engcen6,OU=Servers,OU=centrifyse,DC=centrify,DC=vms
    Key Version = 11
    Deleting SPN oracle/engcen6
    Keeping SPN myservice/engcen6
    Keeping SPN myservice/engcen6.centrify.vms
    Keeping SPN nfs/engcen6.centrify.vms
    Keeping SPN nfs/engcen6
    Keeping SPN ipp/engcen6.centrify.vms
    Keeping SPN ipp/engcen6
    Keeping SPN http/engcen6.centrify.vms
    Keeping SPN http/engcen6
    Keeping SPN host/engcen6.centrify.vms
    Keeping SPN host/engcen6
    Keeping SPN ftp/engcen6.centrify.vms
    Keeping SPN ftp/engcen6
    Keeping SPN cifs/engcen6.centrify.vms
    Keeping SPN cifs/engcen6
    Keeping SPN afpserver/engcen6.centrify.vms
    Keeping SPN afpserver/engcen6
    Removing SPNs from ADObject engcen6
    Removing spns and from config file for engcen6
    Removing SPNS from Keytab for engcen6
    Success: Del SPNs: Default Key Tab
    
  2. Verify the new deleted SPN with “adinfo –C”
    $ adinfo -C | grep oracle
    $
    
    No results imply that there's no entry.

Using adleave/adjoin 
  1. Edit the /etc/centrifydc/centrifydc.conf file and use the krb5.service.principals parameter to reflect the desired SPNs and save the file
  2. Note the Zone and Computer Roles the system belongs to  (using access manager, UNIX CLI or ADUC)
  3. Leave AD by running “dzdo adleave –r –u [AD-user-that-can-remove-the-computer-object]”
    this will leave the domain and remove the computer object;  if you rather do an offline leave, use the adleave -f command.
  4. Join AD by running the “[elevate] adjoin –z [zone] –c [container-in-ad] –u [ad-user-that-can-join]  [domain.name]” 
    if you have to join any computer roles, use the –computerrolrole parameter and list the computer roles.
  5. Verify that the newly-joined system has the SPNs you require by using adinfo -C

Do you know any instances of conflicts with these SPNs?
Yes.  Other Kerberos-enabled apps may rely on these SPNs.  Some notables:
  • Hadoop:  Applications like Cloudera Manager, Hortonworks Ambari or MapR Control System will create HTTP records for SNEGO-enabled services.  The best practice is to disable the http SPN using the krb5.service.principals parameter PRIOR to joining any systems that will participate in Hadoop clusters.
    For example, if I forgot to remove the http entry and I already joined my Hadoop node, all I need to do is run the "sudo adkeytab --delspn --principal http/shortname --principal http/fqdn --user myuser"  > this will remove all http SPNs.
  • Certain Java apps:   Some Kerberized java applications may have other conflicts.  Applications vary.
  • Mixed Kerberos Environments: In environments with mixed Kerberos environments (where AD and MIT Kerberos coexist) there may be conflicts, however if you follow the guidelines on Mixed Kerberos, there should be none given that the realms are different and the system keytabs & krb5.conf files are independent.

Saturday, November 15, 2014

Business Cases: Centrifying Java Application Servers to provide on premises AD-based SSO and Authorization

Background


Java application servers like JBOSS, Tomcat, WebSphere and WebLogic are pervasive in large enterprises.  So is Active Directory.  Just like with Apache HTTP, Centrify customers can leverage the tight AD integration in UNIX and Linux platforms and great support for the Windows platform as well. 

We covered the benefits during the Apache HTTP SSO discussion, and the principles are the same.
This post covers how to install the Java SSO module using Apache Tomcat as an example.

Requirements

  • A Centrified Unix/Linux system running Apache Tomcat (Tomcat6 in this example)alternatively, you can follow on JBOSS, WebSphere or WebLogic as well.  The system should be joined to a domain either in zone or workstation mode.
  •  Apache Tomcat running and accesible
  • A domain-joined PC system (or a centrified Mac) to test access from an authenticated Windows system  with a web browser (SPNEGO is not available on Safari)

Implementation Steps

Information gathering

1.            Collect the OS version, architecture, version of Centrify adclient and if an SPN for HTTP is registered
uname -a, adinfo -v and adinfo -C | grep http provide that information
2.            Collect the service status, version, architecture and java version.
“service tomcat(x) status, rpm –qa | grep tomcat and java-versiont” should provide this.
3.            Make sure the Tomcat home page (if enabled) is accessible from the Windows client.
4.            Obtain the proper version of the J2EE SSO plugin from the Centrify Customer Support Center.
Based on the information from steps 1 and 2, you can select which package to download. For example, in my CentOS 6.x, 64bit, Tomcat6

$ uname -a
Linux engcen8.centrifyimage.vms 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ java -version
java version "1.7.0_71"
OpenJDK Runtime Environment (rhel-2.5.3.1.el6-x86_64 u71-b14)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
$ adinfo -v
adinfo (CentrifyDC 5.2.0-218)
$ adinfo -C | grep http
$ dzdo adinfo -C | grep http
                           http/engcen8.centrifyimage.vms
                           http/engcen8
[dwirth@engcen8 lib]$ rpm -qa | grep tomcat
tomcat6-6.0.24-80.el6.x86_64

It looks like my service is running and that is a 64 bit CentOS with Tomcat 6 based on this information,  I will download the package " DirectControl for J2EE App Servers on RHEL 4, 5, 6, Fedora 14, 15, 16, 17 x86_64 " the version is 4.4.4 as of the original post in November 2014.

Installation

Unpack and install the SSO plugin
$ tar xzvf centrify-web-4.4.4-rhel3-x86_64.tgz
The installation file on RHEL for this version is called centrifydc-apache-4.4.4-rhel3-x86_64.rpm, so perform a yum or rpm install.
$ dzdo rpm -Uvh centrifydc-web-4.4.4-rhel3-x86_64.rpm
Preparing...                ########################################### [100%]
   1:CentrifyDC-web      ########################################### [100%]

Configuration of the Java Server and Sample Application

Centrify provides a script that allows for the configuration of JBoss, Tomcat, Websphere and Weblogic.  These servers can run on Microsoft Windows, so there are versions of the plugin for those platforms too.  The script is in /usr/share/centrifydc/java/web and it’s called configure.pl.  All you need to do is follow the prompts to configure Tomcat (options 1-3) and ignore everything about ADFS or certificates at this time.

# /configure.pl

=====================================================================

Welcome to Centrify DirectControl for J2EE Servers Configuration.

 At any prompt, enter ? for help, or return to accept the default value (shown in brackets []).

Please select what type of J2EE server to configure:
[0] Tomcat.
[1] JBoss.
[2] WebLogic Server.
[3] WebSphere Application Server.
[4] Exit this configuration program.
Enter selection:
[0] > 0

===== Configure Tomcat Server for Centrify =====
[0] Run full configuration (all options below).
[1] Copy Centrify jar files to Tomcat server.
[2] Configure Tomcat Server for Centrify.
[3] Setup and deploy Centrify samples.
[4] Configure Tomcat for SSL.
[5] Exit this script


[0] > 1

 === Copy Centrify jar files to Tomcat server ===

Enter the directory where Tomcat Server is installed:
[/usr/share/tomcat6] >
Enter the directory where Java SDK is installed:
[/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.33.x86_64] >
Enter the Tomcat Server version (7.0.x, 6.0.x, 5.5.x or 5.0.x):
[6.0.x] >
You have entered the following:

Tomcat Server directory = /usr/share/tomcat6
Java SDK directory = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.33.x86_64
Tomcat Server version = 6.0.x

Is this correct (y/n) ?
[y] > y

Copying /usr/share/centrifydc/java/web/scripts/tomcat/centrifydc_jaas.config to /usr/share/tomcat6/c
<...>

===== Configure Tomcat Server for Centrify =====
[0] Run full configuration (all options below).
[1] Copy Centrify jar files to Tomcat server.
[2] Configure Tomcat Server for Centrify.
[3] Setup and deploy Centrify samples.
[4] Configure Tomcat for SSL.
[5] Exit this script

Enter selection:
[0] > 3

=== Copy Centrify jar files to Tomcat server ===


Enter the directory where Tomcat Server is installed:
[/usr/share/tomcat6] >

Enter the directory where Java SDK is installed:
[/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.33.x86_64] >

Enter the Tomcat Server version (7.0.x, 6.0.x, 5.5.x or 5.0.x):
[6.0.x] >

You have entered the following:

Tomcat Server directory = /usr/share/tomcat6
Java SDK directory = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.33.x86_64
Tomcat Server version = 6.0.x

Is this correct (y/n) ? y

<...>

===== Configure Tomcat Server for Centrify =====
[0] Run full configuration (all options below).
[1] Copy Centrify jar files to Tomcat server.
[2] Configure Tomcat Server for Centrify.
[3] Setup and deploy Centrify samples.
[4] Configure Tomcat for SSL.
[5] Exit this script

Enter selection:
[0] > 3

=== Setup and deploy Centrify samples ===

Enter the directory where Tomcat Server is installed:
[/usr/share/tomcat6] >

Enter the directory where Java SDK is installed:
[/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.33.x86_64] >

Enter the Tomcat Server version (7.0.x, 6.0.x, 5.5.x or 5.0.x):
[6.0.x] >

You have entered the following:

Tomcat Server directory = /usr/share/tomcat6
Java SDK directory = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.33.x86_64
Tomcat Server version = 6.0.x

Is this correct (y/n) ?
[y] > y

Do you want to setup the Centrify ADFS samples now (y/n) ?
(You must have the ADFS server's hostname and SSL port to setup the ADFS samples.)
[n] >

Verify that everything is working as expected


1.            Sign-in to a Windows client that is a member of your AD Domain

2.            Clear your Kerberos ticket cache by opening a command line and typing "klist purge"
C:\Users\dwirth>klist purge
Current LogonId is 0:0x9bb0d
Deleting all tickets:Ticket(s) purged!
3.            Open Internet Explorer and go to Internet Options > Security > Local Intranet > Sites > Advanced and make sure that your browser has the FQDN or the suffix of the SPN for HTTP registered by the server.
If using Firefox, go to about:config and search for network.automatic-ntlm-auth.trusted-uris, add the SPNs suffix or FQDN there.
4.            Go browse to http://<your-server>/centrifydc-samples.  This will expose the Centrify Sample pages.  Click on Kerberos.  If everything is correct, you should be able to see output that looks like this:

  1. Now if you inspect your kerberos ticket cache, you'll something like this (truncated):
    C:\Users\dwirth>klist
    Current LogonId is 0:0x9bb0d
    #0>     Client: DWirth @ CENTRIFYIMAGE.VMS
    Server: krbtgt/CENTRIFYIMAGE.VMS @ CENTRIFYIMAGE.VMS

    #1>
         Client: DWirth @ CENTRIFYIMAGE.VMS
    Server: HTTP/engcen8.centrifyimage.vms @ CENTRIFYIMAGE.VMS

Ticket # 0 is a Kerberos TGT and #1 is a service ticket that was requested by Diana to access the Apache HTTP service on engcen8.

Using the Java Plugin

The Java plugin has exposed the methods to leverage AD authentication via Centrify.  For example, the web.xml file of a server may add directives like these:

<login-config>
     <auth-method>SPNEGO</auth-method>
     <realm-name>CENTRIFYDC</realm-name>
</login-config> 

The Centrify Java Guide, explains to J2EE Web Admins and developers how to use these directives and methods.


Video Playlist

(7 minutes total)