Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

This

...

describes

...

the

...

test

...

enviroment

...

for

...

the

...

development

...

and

...

prototyping

...

on

...

the

...

project.

...

Test

...

Machine Overview 

This section describes the servers running our test environment, and how to access test pages for the packages we are testing.

WebAuth 

The machine foonalagoona.mit.edu hosts the test central login server.  For the Webauth package, it runs the WebKDC software.

posteverything.mit.edu

...

(running

...

Apache

...

2.0)

...

has

...

the

...

Webauth

...

application

...

server

...

test

...

software,

...

available

...

at

...

:

     https://posteverything.mit.edu/tests/

...

This

...

setup

...

currently

...

uses

...

certificates

...

signed

...

by

...

my

...

own

...

test

...

CA,

...

not

...

MIT

...

certificates,

...

so

...

you

...

will

...

get

...

warnings

...

about

...

this

...

if

...

you

...

attempt

...

to

...

visit

...

this

...

site,

...

as

...

well

...

as

...

when

...

you

...

are

...

redirected

...

to

...

the

...

login

...

server.

...

When

...

you

...

select

...

a

...

test,

...

and

...

you

...

have

...

not

...

yet

...

logged

...

in

...

to

...

the

...

system,

...

you

...

will

...

be

...

redirected

...

to

...

the

...

login

...

server

...

(at

...

foonalagoona).

...

  Here

...

you

...

will

...

see

...

a

...

login

...

page

...

displayed,

...

from

...

which

...

you

...

can

...

authenticate

...

either

...

using

...

your

...

Kerberos

...

username

...

and

...

password,

...

or

...

using

...

existing

...

Kerberos

...

tickets

...

(via

...

HTTP/SPNEGO,

...

if

...

you

...

have

...

configured

...

your

...

browser

...

appropriately)

...

or

...

certificates

...

(currently

...

requires

...

a

...

user

...

certificate

...

signed

...

by

...

my

...

test

...

CA,

...

not

...

an

...

MIT

...

cert).

...

  When

...

you

...

have

...

authenticated

...

successfully,

...

a

...

confirmation

...

is

...

displayed,

...

with

...

a

...

link

...

to

...

redirect

...

you

...

back

...

to

...

the

...

application

...

server.

...

  Once

...

you

...

have

...

logged

...

in,

...

subsequent

...

attempts

...

to

...

access

...

the

...

application

...

server

...

site

...

should

...

take

...

you

...

directly

...

to

...

the

...

confirmation

...

page.

...

If

...

you

...

authenticate

...

using

...

your

...

existing

...

Kerberos

...

tickets,

...

or

...

certificates,

...

the

...

confirmation

...

page

...

will

...

offer

...

an

...

option

...

to

...

always

...

try

...

that

...

authentication

...

method

...

in

...

the

...

future,

...

instead

...

of

...

displaying

...

the

...

login

...

page.

...

 

 Another test application server is at:

    https://pinkflag.mit.edu/tests/

...

This

...

server

...

is

...

running

...

Apache

...

1.3,

...

so

...

is

...

useful

...

for

...

testing

...

the

...

Webauth

...

module

...

ported

...

locally

...

to

...

1.3.

...

Shibboleth 

foonalagoona.mit.edu

...

runs

...

the

...

Shibboleth

...

IdP.

...

  This

...

software

...

is

...

a

...

Java

...

servlet,

...

running

...

under

...

Tomcat

...

5.5,

...

and

...

Apache

...

2.0,

...

with

...

the

...

mod_jk

...

connector.

...

  Currently

...

the

...

IdP

...

SSO

...

handler

...

is

...

protected

...

by

...

Webauth,

...

so

...

you

...

will

...

be

...

redirected

...

to

...

the

...

test

...

Webauth

...

login

...

page

...

for

...

authentication.

...

posteverything.mit.edu

...

runs

...

the

...

Shibboleth

...

SP

...

software;

...

this

...

is

...

a

...

C+

...

+

...

Apache

...

module,

...

and

...

the

...

shibd

...

daemon.

...

These

...

two

...

servers

...

are

...

configured

...

as

...

a

...

"bilateral

...

deployment",

...

i.e.

...

where

...

each

...

server

...

has

...

explicit

...

configuration

...

to

...

talk

...

to

...

the

...

other.

...

A

...

simple

...

test

...

of

...

Shibboleth-protected

...

content

...

is

...

available

...

at:

...

    https://posteverything.mit.edu/shib-testenv

...

This

...

will

...

simply

...

dump

...

out

...

the

...

environment,

...

including

...

the

...

HTTP_SHIB_

...

*

...

variables.

...

 

Note that when you authenticate on our test Webauth login page, the confirmation page currently links back to foonalagoona, since the authentication was invoked from the IdP there; the IdP will then redirect you back to the original server, posteverything.  If you have Javascript enabled in your browser, the latter redirection happens automatically. 

As in the Webauth test, this setup currently uses certificates signed by my own test CA, not MIT (or self-signed) certificates, so you will get warnings about this when you visit this site.

Other tests, can be found at http://posteverything.mit.edu/test.html

...

.

...

Note

...

that

...

this

...

a

...

developers

...

test

...

environment

...

and

...

does

...

not

...

use

...

the

...

pilot

...

or

...

produciton

...

IdPs

...

and

...

it

...

may

...

not

...

always

...

be

...

running.

...

A

...

test

...

application

...

has

...

also

...

been

...

created

...

for

...

the

...

current

...

pilot

...

system

...

and

...

it

...

will

...

be

...

in

...

place

...

when

...

the

...

project

...

reaches

...

its

...

fully

...

operational

...

phase.

...

This

...

test

...

application

...

may

...

be

...

used

...

by

...

the

...

Help

...

Desk

...

and

...

other

...

people

...

to

...

determine

...

if

...

the

...

system

...

is

...

running

...

correctly

...

at

...

any

...

given

...

point

...

in

...

time.

...

It

...

can

...

be

...

found

...

at:

...

    http://touchstone-tester.mit.edu/

...

Server Configuration

This describes the server configuration performed for the test environment login and application servers, not including building and installing the relevant packages' software. 

WebAuth

WebKDC 

To configure the webkdc (login server): 

(See doc/install-webkdc

...

in

...

the

...

webauth

...

source

...

tree

...

for

...

more

...

information).

...

 

In $APACHE_ROOT/conf/httpd.conf,

...

add

...

the

...

following

...

Apache

...

directives:

{
No Format
}
LoadModule webkdc_module modules/mod_webkdc.so
WebKdcServiceTokenLifetime 30d
WebKdcKeyring conf/webkdc/keyring
WebKdcKeytab conf/webkdc/keytab
WebKdcTokenAcl conf/webkdc/token.acl
# enable debugging for now...
WebKdcDebug on
{noformat}
 For our test 

 For our test setup,

...

I

...

requested

...

a

...

"daemon"

...

service

...

ticket

...

for

...

foonalagoona,

...

and

...

installed

...

this

...

in

...

conf/webkdc/keytab;

...

note

...

that

...

this

...

must

...

match

...

the

...

WebAuthWebKdcPrincipal

...

setting

...

in

...

the

...

configuration

...

of

...

Webauth

...

application

...

servers.

...

  The

...

keytab

...

should

...

be

...

owned

...

by

...

the

...

Apache

...

user.

...

In

...

conf.d/ssl.conf,

...

add

...

the

...

following

...

(inside

...

a

...

VirtualHost

...

block

...

that

...

requires

...

SSL

...

to

...

ensure

...

that

...

they

...

are

...

only

...

accessible

...

over

...

SSL):

{
No Format
}
ScriptAlias /login "webkdc/login.fcgi"
ScriptAlias /login-spnego "webkdc/login.fcgi"
ScriptAlias /login-cert "webkdc/login.fcgi"
ScriptAlias /login-simple "webkdc/login.fcgi"
ScriptAlias /logout "webkdc/logout.fcgi"
Alias /images "webkdc/generic/images/"
Alias /help.html "webkdc/generic/help.html"
<Location /webkdc-service>
    SetHandler webkdc
</Location>
<Location "/login-spnego">
    AuthType Kerberos
    AuthName "Kerberos Login"
    Require valid-user
    KrbMethodNegotiate on
    KrbMethodK5Passwd off
    KrbMethodK4Passwd off
    Krb5Keytab /etc/httpd/keytab
    ErrorDocument 401 /login-simple
</Location>
# Test webauth cert auth
<Location "/login-cert">
    SSLVerifyClient require
    SSLVerifyDepth 1
    SSLUserName SSL_CLIENT_S_DN_Email
    ErrorDocument 401 /login-simple
</Location>
{noformat}

The

...

"/login-spnego"

...

and

...

"/login-cert"

...

locations

...

are

...

for

...

supporting

...

REMOTE_USER

...

as

...

set

...

by

...

Apache

...

authentication

...

modules,

...

if

...

present;

...

see

...

doc/install-spnego

...

in

...

the

...

source

...

tree

...

for

...

more

...

information.

...

SPNEGO

...

is

...

handled

...

by

...

mod_auth_kerb

...

on

...

foonalagoona.

...

  Note

...

that

...

its

...

"KrbSaveCredentials

...

on"

...

directive

...

seems

...

to

...

cause

...

the

...

CGI

...

process

...

to

...

segv

...

under

...

Apache

...

2.0.

...

  I

...

debugged

...

this,

...

and

...

came

...

up

...

with

...

the

...

following

...

patch

...

to

...

fix

...

the

...

problem

...

(I

...

have

...

submitted

...

this

...

upstream):

{
Code Block
}
--- mod_auth_kerb.c.orig        2006-02-28 18:01:44.000000000 -0500
+++ mod_auth_kerb.c     2006-11-22 12:12:38.000000000 -0500
@@ -66,7 +66,7 @@
 #include <apr_strings.h>
 #include <apr_base64.h>

-#define ap_null_cleanup NULL
+#define ap_null_cleanup apr_pool_cleanup_null
 #define ap_register_cleanup apr_pool_cleanup_register

 #define ap_pstrdup apr_pstrdup
{code}

Note

...

that

...

conf/webkdc/token.acl

...

must

...

be

...

set

...

up,

...

to

...

allow

...

any

...

application

...

servers

...

to

...

talk

...

to

...

the

...

webkdc:

{
No Format
}
# token.acl -- ACL file for the WebKDC.

# This lets anyone with a krb5 webauth/*@ATHENA.MIT.EDU
# principal to get an id token (perform basic authentication).
# See the mod_webkdc manual for more information.
#krb5:webauth/*@ATHENA.MIT.EDU id
krb5:daemon/posteverything.mit.edu@ATHENA.MIT.EDU id
krb5:daemon/pinkflag.mit.edu@ATHENA.MIT.EDU id
{noformat}

Access

...

to

...

proxied

...

credentials

...

is

...

also

...

controlled

...

here;

...

for

...

example,

...

to

...

allow

...

posteverything

...

to

...

get

...

a

...

ticket

...

for

...

the

...

LDAP

...

server,

...

add

...

an

...

entry

...

like:

{
No Format
}
krb5:daemon/posteverything.mit.edu@ATHENA.MIT.EDU cred krb5 ldap/ldap.mit.edu@ATHENA.MIT.EDU
{noformat}

The

...

first

...

field

...

here

...

(the

...

service

...

principal

...

of

...

the

...

application

...

web

...

server)

...

can

...

be

...

wildcarded,

...

as

...

with

...

the

...

"id"

...

acl,

...

but

...

not

...

the

...

"cred"

...

(principal

...

for

...

the

...

desired

...

credential)

...

field.

...

  Only

...

krb5

...

credentials

...

are

...

supported.

...

WebAuth

...

Application

...

Server

...

Add

...

the

...

following

...

to

...

$APACHE_ROOT/conf/httpd.conf

...

(see

...

INSTALL

...

in

...

the

...

WebAuth

...

source

...

tree,

...

and

...

the

...

mod_

...

webauth

...

manual

...

,

...

for

...

more

...

information):

{
No Format
}
# For webauth (see INSTALL in webauth source tree)
LoadModule webauth_module modules/mod_webauth.so
WebAuthKeyringAutoUpdate on
WebAuthKeyringKeyLifetime 30d
WebAuthLoginURL "https://foonalagoona.mit.edu/login/"
WebAuthWebKdcURL "https://foonalagoona.mit.edu/webkdc-service/"
WebAuthWebKdcPrincipal daemon/foonalagoona.mit.edu
WebAuthKeyring conf/webauth/keyring
WebAuthKeytab conf/webauth/keytab
WebAuthServiceTokenCache conf/webauth/service_token.cache
WebAuthSSLRedirect on# This file holds the cert(s) needed to verify the WebKDC's cert.
WebAuthWebKdcSSLCertFile conf/ssl.crt/my-ca.crt
# XXX for testing...
WebAuthDebug on
# for test suite...
Include conf/webauth-tests.conf
# for proxied credential tests...
WebAuthCredCacheDir conf/webauth/credcache
# Debug...
<Location /webauth-status>
  SetHandler webauth
  Order allow,deny
  Allow from all
</Location>
{noformat}
&nbsp;

 (When

...

building/installing,

...

you

...

must

...

do

...

"make

...

install-tests"

...

to

...

install

...

the

...

test

...

suite.)

...

Install

...

a

...

keytab

...

in

...

conf/webauth/keytab.

...

  For the test setup,

...

I

...

requested

...

a

...

daemon

...

service

...

key

...

(for

...

production,

...

we

...

probably

...

want

...

to

...

create

...

"webauth"

...

keys,

...

or

...

some

...

other

...

distinctive

...

principal).

...

  The

...

webauth

...

directory,

...

and

...

the

...

keytab,

...

should

...

be

...

owned

...

by

...

the

...

apache

...

user.

...

 For the test setup,

...

I

...

created

...

a

...

certificate

...

signed

...

by

...

my

...

own

...

test

...

CA.

...

  The

...

server

...

and

...

CA

...

certificates

...

should

...

be

...

installed

...

in

...

conf/ssl.crt,

...

and

...

the

...

key

...

in

...

conf/ssl.key/.

...

  These

...

should

...

be

...

set

...

in

...

the

...

SSL

...

configuration

...

(ssl.conf

...

in

...

Apache

...

2.0);

...

for

...

example,

...

on

...

the

...

server

...

posteverything:

{
No Format
}
SSLCertificateFile /etc/httpd/conf/ssl.crt/posteverything-server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/posteverything-server.key
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/my-ca.crt
{noformat}

h3. Shibboleth


h5. IdP

&nbsp;See [

Shibboleth

IdP

 See https://authdev.it.ohio-state.edu/twiki/bin/view/Shibboleth/JKIdPInstall

...

for

...

information

...

on

...

installing

...

the

...

IdP.

...

For

...

testing,

...

foonalagoona

...

(IdP)

...

and

...

posteverything

...

(SP)

...

are

...

configured

...

as

...

a

...

"

...

bilateral

...

deployment

...

",

...

as

...

described

...

on

...

the

...

Shibboleth

...

wiki,

...

except

...

they

...

use

...

server

...

certificates

...

signed

...

by

...

my

...

test

...

CA

...

instead

...

of

...

self-signed

...

certs.

...

Initial

...

testing

...

failed

...

mysteriously,

...

resulting

...

in

...

a

...

404

...

error

...

(application

...

unavailable)

...

from

...

Tomcat

...

for

...

the

...

IdP

...

SSO

...

handler,

...

though

...

the

...

logs

...

all

...

indicated

...

that

...

the

...

IdP

...

web

...

application

...

was

...

getting

...

initialized

...

correctly.

...

  I

...

followed

...

instructions

...

for

...

getting

...

better

...

logging

...

output

...

(requires

...

installing

...

log4j,

...

etc.),

...

but

...

this

...

did

...

not

...

uncover

...

the

...

problem.

...

  Finally,

...

careful

...

investigation

...

revealed

...

the

...

problem

...

-

...

-

...

a

...

trailing

...

/

...

in

...

the

...

wayfURL

...

value

...

in

...

the

...

SP's

...

shibboleth.xml

...

(as

...

copied

...

from

...

the

...

Location

...

setting

...

in

...

the

...

SingleSignOnService

...

element

...

in

...

the

...

partner

...

metadata).

...

 The IdP configuration (idp.xml)

...

is

...

here

...

.  The partner metadata file is here.

I enabled the eduPersonScopedAffiliation and eduPersonPrincipalName attributes in resolver.xml, and added eduPersonPrincipalName to arp.site.xml

...

.

...

  This

...

enables

...

setting

...

REMOTE_USER

...

to

...

the

...

authenticated

...

user

...

name

...

in

...

the

...

SP

...

application.

...

  To

...

test

...

getting

...

attributes

...

from

...

the

...

MIT

...

LDAP

...

server,

...

I

...

configured

...

resolver.ldap.xml

...

to

...

do

...

an

...

anonymous

...

bind

...

to

...

the

...

server,

...

and,

...

initially,

...

mapped

...

the

...

eduPersonPrincipalName

...

attribute

...

to

...

the

...

"mail"

...

LDAP

...

attribute,

...

as

...

eduPersonPrincipalName

...

was

...

not

...

part

...

of

...

the

...

schema

...

on

...

ldap.mit.edu

...

at

...

the

...

time;

...

to

...

use

...

this

...

configuration,

...

I

...

changed

...

the

...

resolverConfig

...

setting

...

in

...

idp.xml

...

accordingly.

...

  Note

...

that

...

I

...

was

...

unable

...

to

...

bind

...

successfully

...

using

...

GSSAPI

...

in

...

brief

...

testing;

...

the

...

error

...

"No

...

valid

...

credentials

...

provided"

...

was

...

logged

...

in

...

shib-error.log,

...

even

...

when

...

I

...

tried

...

initializing

...

a

...

proper

...

ticket

...

cache

...

before

...

starting

...

tomcat.

...

  (The

...

GSSAPI

...

bind

...

had

...

worked

...

in

...

testing

...

WebAuth's

...

mod_webauthldap

...

module).

...

After

...

the

...

ldap.mit.edu

...

schema

...

was

...

updated

...

to

...

populate

...

additional

...

eduPerson

...

attribute

...

values,

...

I

...

added

...

these

...

and

...

some

...

other

...

common

...

LDAP

...

attributes

...

to

...

arp.site.xml

...

,

...

and

...

reverted

...

the

...

mapping

...

of

...

eduPersonPrincipalName

...

to

...

"mail"

...

in

...

resolver.ldap.xml

...

.

 SP

 See https://authdev.it.ohio-state.edu/twiki/bin/view/Shibboleth/SPLinuxInstall

...

for

...

information

...

on

...

installing

...

the

...

SP

...

on

...

Linux.

...

  For

...

posteverything,

...

I

...

downloaded

...

and

...

installed

...

all

...

of

...

the

...

RPMs

...

from:

...

    http://shibboleth.internet2.edu/downloads/RPMS/i386/RHE/4.3/

...

The

...

RPM

...

installs

...

a

...

proper

...

shib.conf

...

in

...

$APACHE_ROOT/conf.d.

...

  The

...

Shibboleth

...

configuration

...

files

...

are

...

in

...

/etc/shibboleth.

...

For

...

the

...

shib-testenv

...

page

...

noted

...

above

...

(a

...

CGI

...

script

...

which

...

simply

...

dumps

...

out

...

the

...

environment),

...

I

...

added

...

the

...

following

...

to

...

shib.conf:

{
No Format
}
ScriptAlias /shib-testenv "/var/www/cgi-bin/testenv.cgi"
<Location /shib-testenv>
  AuthType shibboleth
  ShibRequireSession On
  ShibRedirectToSSL 443
  require valid-user
</Location>
{noformat}

For

...

testing,

...

foonalagoona

...

(IdP)

...

and

...

posteverything

...

(SP)

...

are

...

configured

...

as

...

a

...

"bilateral

...

deployment";

...

I

...

started

...

with

...

the

...

instructions

...

at:

...

    https://authdev.it.ohio-state.edu/twiki/bin/view/Shibboleth/BilateralDeployment

...

but

...

changed

...

things

...

to

...

use

...

the

...

server

...

certificates

...

signed

...

by

...

my

...

test

...

CA,

...

instead

...

of

...

using

...

self-signed

...

certs.

...

The

...

partner

...

metadata

...

file

...

is

...

here

...

.  Besides the host/domain

...

names,

...

the

...

significant

...

difference

...

between

...

this

...

and

...

the

...

file

...

resulting

...

from

...

following

...

the

...

wiki

...

instructions

...

is

...

that

...

the

...

test

...

CA

...

certificate

...

is

...

embedded,

...

instead

...

of

...

the

...

IdP

...

cert

...

itself.

...

The

...

shibboleth.xml

...

file

...

is

...

here

...

I modified the distributed AAP.xml to add a Header value for eduPersonNickname, and uncommented the sections defining the eduPerson and common LDAP attributes. 

To test against a second IdP (e.g.

...

ProtectNetwork),

...

add

...

a

...

SessionInitiator

...

element

...

for

...

it

...

in

...

shibboleth.xml

...

and

...

add

...

a

...

ShibRequireSessionWith

...

directive

...

to

...

the

...

appropriate

...

Location

...

block

...

in

...

the

...

Apache

...

configuration,

...

e.g.:

{
No Format
}
ShibRequireSessionWith ProtectNetwork
{noformat}