Tags:
not added yet
Kerberos SSO integration is no longer supported. You can use OpenID Connect (OAuth2) or SAML as alternative authentication methods.
Table of Contents
The elements of the example scenario:
PrerequirementsHost NamesEach server in a Kerberos authentication realm must be assigned a Fully Qualified Domain Name (FQDN) that is forward-resolvable. Kerberos also expects the server's FQDN to be reverse-resolvable. If reverse domain name resolution is not available, set the rdns variable to false in clients' krb5.conf` If the server already has an FQDN assigned to it, test forward and reverse look-up with the following commands: $ nslookup winsvr.intland.local $ nslookup <server ip address>
The output of the first command should contain the IP address of the server. The output of the second command should contain the FQDN of the server. ConnectivityTo verify connectivity between hosts, ping each host's: In winsvr.intland.local: ping cb.intland.local
If the server not accessible you can add it to the hosts file: C:\Windows\System32\drivers\etc\hosts In cb.intland.local: ping winsvr.intland.local
If the server not accessible you can add it to the hosts file: /etc/hosts Time SynchronizationThe Kerberos protocol requires the time of the client and server to match: if the system clocks of the client does not match that of the server, authentication will fail. The simplest way to synchronize the system clocks is to use a Network Time Protocol (NTP) server. (Note: Active Directory Domain Controllers are typically also NTP servers.) FirewallsAs with all network services, Kerberos must be allowed to pass through any firewalls between hosts. The Kerberos System Administration Manual has a detailed section on this topic. Setup apache 2 modsThe following actions should be performed in cb.intland.local to enable Kerberos and rewrite engine in apache2 Enable rewrite module: $ a2enmod headers
Install apache2 kerberos module: $ apt-get install libapache2-mod-auth-kerb krb5-user
Apache 2 restart should be required: service apache2 restartThese commands only works on Ubuntu Kerberos configuration of cb.intland.localConfigure KerberosThe Kerberos realm INTLAND.LOCAL with KDC winsvr.intland.local should be configured in the /etc/krb5.conf file : ... [libdefaults] default_realm = INTLAND.LOCAL ... [domain_realm] cb.intland.local = INTLAND.LOCAL intland.local = INTLAND.LOCAL .intland.local = INTLAND.LOCAL ... [realms] INTLAND.LOCAL = { admin_server = winsvr.intland.local kdc = winsvr.intland.local } ...
Test if Kerberos worksDo a basic check of your Kerberos setup using kinit
use your shell and type $ kinit bela@INTLAND.LOCAL
If everything is OK the command will ask you for bela's domain password and terminates without an error message.
Creating the HTTP service principal for cb.intland.localFor every kerberized host you have to create a service principal on the KDC.
The ktpass command creates the pricipal HTTP/cb.intland.local@INTLAND.LOCAL, maps it to AD account cbsrv and exports it's key to the keytabfile c:\temp\cb-kerberos.keytab. Copy that file to cb.intland.local, for example the following path: /etc/apache2/cb-kerberos.keytab
Check if the KDC sends correct ticketsCheck domain and user properties on winsvr.intland.localCheck for SPN associated with account cbsrv: > C:\Users\Administrator>setspn -L cbsrv Registered ServicePrincipalNames for CN=cbsrv,CN=Users,DC=intland,DC=local: HTTP/cb.intland.local Check for duplicate SPN: > C:\Users\Administrator>setspn -X Checking domain DC=intland,DC=local Processing entry 0 found 0 group of duplicate SPNs. If the setspn find duplications for intland.local the ticket request (kvno) will fail on cb.intland.local. Check if the KDC sends correct tickets (kvno, enctype) on cb.intland.local:Obtain and cache Kerberos ticket-granting tickets for user cbsvr. $ kinit cbsrv@INTLAND.LOCAL Password for cbsrv@INTLAND.LOCAL: Acquires a service ticket for the service principal: $ kvno HTTP/cb.intland.local@INTLAND.LOCAL HTTP/cb.intland.local@INTLAND.LOCAL: kvno = 5, keytab entry valid List the Kerberos principal and Kerberos tickets held in a credentials cache: $ klist -e Ticket cache: FILE:/tmp/krb5cc_0 Default principal: cbsrv@INTLAND.LOCAL Valid starting Expires Service principal 02/03/15 10:47:30 02/03/15 20:47:30 krbtgt/INTLAND.LOCAL@INTLAND.LOCAL renew until 02/04/15 10:47:23, Etype (skey, tkt): arcfour-hmac, arcfour-hmac 02/03/15 10:47:32 02/03/15 20:47:30 HTTP/cb.intland.local@INTLAND.LOCAL renew until 02/04/15 10:47:23, Etype (skey, tkt): arcfour-hmac, arcfour-hmac List the Kerberos principal and Kerberos tickets held in the generated keytab file: $ klist -e -k -t /etc/apache2/cb-kerberos.keytab Keytab name: FILE:/etc/apache2/cb-kerberos.keytab KVNO Timestamp Principal ---- ----------------- -------------------------------------------------------- 5 01/01/70 01:00:00 HTTP/cb.intland.local@INTLAND.LOCAL (arcfour-hmac) It's important to check in detail:
Preparing the keytab file
If this doesn't work then you know it's your Kerberos config that's the problem and nothing to do with Apache or the module at all. Configure apache 2 to use kerberos authenticationOpen /etc/apache2/apache2.conf file, and append the following lines: LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so LoadModule auth_kerb_module modules/mod_auth_kerb.so <VirtualHost *:80> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPreserveHost On ProxyPass /cb http://localhost:8080/cb ProxyPassReverse /cb http://localhost:8080/cb ServerName cb.intland.local <Location /cb> Order allow,deny Allow from all AuthType Kerberos KrbServiceName HTTP AuthName "Domain login" KrbAuthRealms INTLAND.LOCAL Krb5KeyTab /etc/apache2/cb-kerberos.keytab require valid-user KrbLocalUserMapping On KrbMethodNegotiate On KrbMethodK5Passwd Off # Below directives puts logon name of authenticated user into http header X-User-Global-ID RequestHeader unset X-User-Global-ID RewriteEngine On RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule /cb.* - [E=RU:%1,L,NS] RequestHeader set X-User-Global-ID %{RU}e # Remove domain suffix to get the simple logon name RequestHeader edit X-User-Global-ID "@INTLAND.LOCAL$" "" </Location> </VirtualHost>
If you want to use the AJP port you should use these settings: LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so LoadModule auth_kerb_module modules/mod_auth_kerb.so <VirtualHost *:80> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPreserveHost On ProxyPass /cb ajp://localhost:8009/cb ProxyPassReverse /cb ajp://localhost:8009/cb ServerName perf.intland.local <Location /cb> Order allow,deny Allow from all AuthType Kerberos KrbServiceName HTTP AuthName "Domain login" KrbAuthRealms INTLAND.LOCAL Krb5KeyTab /etc/apache2/kerberos.keytab require valid-user KrbMethodNegotiate On KrbMethodK5Passwd Off KrbLocalUserMapping On # Below directives puts logon name of authenticated user into http header X-User-Global-ID RequestHeader unset X-User-Global-ID RewriteEngine On RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule /cb.* - [E=RU:%1,L,NS] RequestHeader set X-User-Global-ID %{RU}e # Remove domain suffix to get the simple logon name RequestHeader edit X-User-Global-ID "@INTLAND.LOCAL$" "" </Location> </VirtualHost>
Make sure the AJP port enabled in tomcat's server.xml. The apache2 server should be restarted after the modification. $ service apache2 restart
Configure codeBeamer to use AD
Enabling SSO in codeBeamer System Administration
Enabling Kerberos Authentication in Client
Enabling Kerberos Authentication in Firefox
Open codeBeamer with Kerberos SSO
|
Fast Links
codebeamer Overview codebeamer Knowledge Base Services by Intland Software |
This website stores cookies on your computer. These cookies are used to improve your browsing experience, constantly optimize the functionality and content of our website, furthermore helps us to understand your interests and provide more personalized services to you, both on this website and through other media. With your permission we and our partners may use precise geolocation data and identification through device scanning. You may click accept to consent to our and our partners’ processing as described above. Please be aware that some processing of your personal data may not require your consent, but you have a right to object to such processing. By using our website, you acknowledge this notice of our cookie practices. By accepting and continuing to browse this site, you agree to this use. For more information about the cookies we use, please visit our Privacy Policy.Your preferences will apply to this website only.