[[TOC(noheading, ../../..,../*)]]
= Accepting Access Manager SAML Assertions =
== Access Manager Configuration and settings ==
Please see [http://www.novell.com/documentation/novellaccessmanager/#inst installation] and [http://www.novell.com/documentation/novellaccessmanager/#admin administration] guides for assistance in configuring Access Manager. This sample makes the following assumptions:
* Roles are sent in the saml using the attribute name http://www.bandit-project.org/ontologies/2008/otis/sampleroles
* all role values are in their own attribute value, not sent as part of a concatenated string.
== General Configuration ==
Please see the general [../../../Configuration/General XML File Configuration Format] for details on base configuration
== Authentication Methods ==
Following the general [../../../Configuration/General/SpecificAuthenticationMethods Configuration for Authentication Methods] we set up the following authentication methods.
{{{
urn:bandit-project:otis:authmethod:1.0:usernamePassword
org.bandit.otis.impl.UsernamePasswordAuthMethod
urn:bandit-project:otis:authmethod:1.0:anonymous
org.bandit.otis.impl.AnonymousAuthMethod
urn:bandit-project:otis:authmethod:1.0:infocard
org.bandit.otis.impl.InfocardAuthMethod
urn:bandit-project:otis:authmethod:1.0:samlpolicy
org.bandit.otis.impl.SAMLPolicyAuthMethod
urn:InMemoryCache
false
true
/JSSharedScope
RESULT = getAuthEntityId(saml);
true
RESULT = getMappedAttrURI(saml, samlURI);
RESULT = getMappedAttrValue(saml, samlURI, idasURI, samlvalue);
}}}
== Role Configuration ==
The roles configuration for this is based on the general [../../../Configuration/Roles Configuration For Roles]. In this case there are no roles assumed automatically at authentication time and only values from the default role name in the saml are use. Please not in this sample the role values are not transformed or modified. That could happen at two different places.
* During the authentication using !InjectEntityAttrValueMap configuration to map the values/
* During the role configuration, checking the issuer, the attribute and then mapping the values to something meaningful. I prefer mapping here because it allows me to have rules that span attributes, and preserves the data in it's original form.
The role configuration looks like this:
{{{
true
http://www.bandit-project.org/ontologies/2008/otis/sampleroles
RESULT = new Packages.org.bandit.otis.impl.CommonRole( String(data));
RESULT.addPropertyValue(Packages.org.bandit.otis.api.IRole.roleTypes,
attribute.getAttrID().toString());
}}}
== Sample ==
Below is a full sample of the minimal system described above which allows specific saml assertions to be accepted and to be used for entities and roles.
{{{
urn:Corporate-LDAP-Server
// TODO fix so it looks at the issuer
function getAuthEntityId(saml)
{
if ( saml != null)
{
Temp = saml.getSubject();
id = Temp.getNameID();
if ( !id || id == null)
id = saml.getID();
}
return id;
}
//based on the issuer map the attribute uris
function getMappedAttrURI(saml, uri)
{
// should look at the saml issuer and make adjustments
return uri;
}
//based on the issuer map the attribute uris
function getMappedAttrValue(saml, oldURI, newURI, value)
{
// should look at the saml issuer and make adjustments
return value;
}
urn:bandit-project:otis:authmethod:1.0:usernamePassword
org.bandit.otis.impl.UsernamePasswordAuthMethod
urn:bandit-project:otis:authmethod:1.0:anonymous
org.bandit.otis.impl.AnonymousAuthMethod
urn:bandit-project:otis:authmethod:1.0:infocard
org.bandit.otis.impl.InfocardAuthMethod
urn:bandit-project:otis:authmethod:1.0:samlpolicy
org.bandit.otis.impl.SAMLPolicyAuthMethod
urn:InMemoryCache
false
true
/JSSharedScope
RESULT = getAuthEntityId(saml);
true
true
RESULT = getMappedAttrURI(saml, samlURI);
RESULT = getMappedAttrValue(saml, samlURI, idasURI, samlvalue);
org.eclipse.higgins.idas.cp.inmem.InMemoryContextFactory
InMemoryContextFactory
$context+inmem
urn:InMemoryCache
$context+inmem
urn:InMemoryCache
org.eclipse.higgins.idas.registry.IdASRegistry
true
http://www.bandit-project.org/ontologies/2008/otis/sampleroles
RESULT = new Packages.org.bandit.otis.impl.CommonRole(
String(data));
RESULT.addPropertyValue(Packages.org.bandit.otis.api.IRole.roleTypes,
attribute.getAttrID().toString());
}}}