[[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()); }}}