Wiki Markup |
---|
Zero or more {{NameMapping}} elements \(in {{idp.xml\}}) call out the name mappings recognized by a Shibboleth deployment. The {{NameMapping}} element supports the following attributes: {html}<table>{html}<table cellpadding="5" cellspacing="0" border="1"> {html}<tr>{html} {html}<tr> <td align="left" colspan="4">{html}{html}<strong>{html}_Subclasses of {html}<tt>{html}BaseNameIdentifierMapping{html}</tt>{html}:_{html}</strong>{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}><strong>Subclasses of <tt>BaseNameIdentifierMapping</tt>:</strong></td> </tr> <tr> <th align="left">{html}Attribute Name{html}</th>{html} {html}>Attribute Name</th> <th align="left">{html}Type{html}</th>{html} {html}>Type</th> <th align="center">{html}Required{html}</th>{html} {html}>Required</th> <th align="left">{html}Default{html}<>Default</th>{html} {html}</tr>{html} <tr> {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}id{html}</tt>{html}{html}</td>{html} {html}><tt>id</tt></td> <td align="left">{html}ID{html}<>ID</td>{html} {html} <td align="center">{html}No{html}</td>{html} {html}>No</td> <td align="left">{html}{html}<></td>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <td align="left">{html}{html}<tt>{html}format{html}</tt>{html}{html}</td>{html} {html}><tt>format</tt></td> <td align="left">{html}URI{html}</td>{html} {html}>URI</td> <td align="center">{html}Yes{html}<>Yes</td>{html} {html} <td align="left">{html}{html}<></td>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <td align="left" colspan="4">{html}{html}<strong>{html}_Class {html}<tt>{html}X509SubjectNameNameIdentifierMapping{html}</tt>{html}:_{html}</strong>{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}><strong>Class <tt>X509SubjectNameNameIdentifierMapping</tt>:</strong></td> </tr> <tr> <th align="left">{html}Attribute Name{html}</th>{html} {html}>Attribute Name</th> <th align="left">{html}Type{html}</th>{html} {html}>Type</th> <th align="center">{html}Required{html}</th>{html} {html}>Required</th> <th align="left">{html}Default{html}<>Default</th>{html} {html}</tr>{html} {html}<tr>{html} {html} <td align="left">{html}{html}<tt>{html}regex{html}</tt>{html}{html}</td>{html} {html}><tt>regex</tt></td> <td align="left">{html}String{html}</td>{html} {html}>String</td> <td align="center">{html}No{html}</td>{html} {html}>No</td> <td align="left">{html}{html}<tt>{html}><tt>.*uid=\(\[^,/\]+\).*{html}</tt>{html}{html}<tt></td>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <td align="left">{html}{html}<tt>{html}qualifier{html}</tt>{html}{html}</td>{html} {html}><tt>qualifier</tt></td> <td align="left">{html}URI{html}</td>{html} {html}>URI</td> <td align="center">{html}Yes{html}</td>{html} {html}>Yes</td> <td align="left">{html}{html}<></td>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <td align="left">{html}{html}<tt>{html}internalNameContext{html}</tt>{html}{html}</td>{html} {html}><tt>internalNameContext</tt></td> <td align="left">{html}String{html}</td>{html} {html}>String</td> <td align="center">{html}Yes {html}>Yes </td>{html} {html} <td align="left">{html}{html}<></td>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <td align="left" colspan="4">{html}{html}<strong>{html}_Subclasses><strong>Subclasses of {html}<tt>{html}AQHNameIdentifierMapping{html}<<tt>AQHNameIdentifierMapping</tt>{html}:_{html}</strong>{html}{html}<strong></td>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <th align="left">{html}Attribute Name{html}</th>{html} {html}>Attribute Name</th> <th align="left">{html}Type{html}<>Type</th>{html} {html}<th align <th align="center">{html}Required{html}</th>{html} {html}>Required</th> <th align="left">{html}Default{html}<>Default</th>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <td align="left">{html}{html}<tt>{html}handleTTL{html}</tt>{html}{html}</td>{html} {html}><tt>handleTTL</tt></td> <td align="left">{html}long{html}</td>{html} {html}>long</td> <td align="center">{html}No{html}</td>{html} {html}>No</td> <td align="left">{html}{html}<tt>{html}1800{html}</tt>{html}{html}</td>{html}><tt>1800</tt></td> {html}</tr>{html}tr> {html}<tr>{html} {html}<tr> <td align="left" colspan="4">{html}{html}<strong>{html}_All><strong>All implementations of {html}<tt>{html}NameIdentifierMapping{html}<<tt>NameIdentifierMapping</tt>{html}:_{html}</strong>{html}{html}<strong></td>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <th align="left">{html}Attribute Name{html}</th>{html} {html}>Attribute Name</th> <th align="left">{html}Type{html}</th>{html} {html}<th align="center">{html}Required{html}</th>{html} {html}>Type</th> <th align="center">Required</th> <th align="left">{html}Default{html}<>Default</th>{html} {html}</tr>{html} {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}type{html}</tt>{html}{html}</td>{html} {html}<tr> <td align="left"><tt>type</tt></td> <td align="left">{html}String{html}</td>{html} {html}>String</td> <td align="center">{html}Yes{html}</td>{html} {html}>Yes</td> <td align="left">{html}{html}<></td>{html} {html}</tr>{html} {html}<tr>{html} {html}<tr> <td align="left">{html}{html}<tt>{html}class{html}</tt>{html}{html}</td>{html} {html}><tt>class</tt></td> <td align="left">{html}String{html}</td>{html} {html}>String</td> <td align="center">{html}Yes{html}</td>{html} {html}>Yes</td> <td align="left">{html}{html}<></td>{html} {html}</tr>{html} {html}tr> </table>{html} Note: One and only one of the {{type}} or {{class}} attributes is required. A brief description of each attribute follows: * {{id}} : a unique ID for this {{NameMapping}} element * {{format}} : a NameIdentifierFormat associated with this {{NameMapping}} element * {{regex}} : a regular expression used to extract the principal name from the DN in the {{getPrincipal}} method of class {{X509SubjectNameNameIdentifierMapping}} * {{qualifier}} : a URI, which is matched against the value of the {{NameQualifier}} attribute \(of the {{<saml:NameIdentifier><saml:NameIdentifier>}} element\) in the {{getPrincipal}} method of class {{X509SubjectNameNameIdentifierMapping}} * {{internalNameContext}} : a string template containing one or more {{%PRINCIPAL%}} placeholders used to construct a {{SAMLNameIdentifier}} object in method {{getNameIdentifierName}} of class {{X509SubjectNameNameIdentifierMapping}} * {{handleTTL}} : the time-to-live \(TTL\) of the handle in seconds * {{type}} : an alias pre-registered with the {{NameMapper}} class \(see NameIdentifierMapping for possible values\) * {{class}} : the fully qualified class name of an implementation of NameIdentifierMapping A {{NameMapping}} element of type {{CryptoHandleGenerator}} \(equivalent to class =CryptoShibHandle=\{{CryptoShibHandle}}) contains a number of child elements: {html}<table>{html} {html}<tr>{html} {html}<td align="left" colspan="4">{html}{html}<strong>{html}_Class {html}<tt>{html}CryptoShibHandle{html}</tt>{html}:_{html}</strong>{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}<th align="left">{html}Element Name{html}</th>{html} {html}<th align="center">{html}Required{html}</th>{html} {html}<th align="left">{html}Default{html}</th>{html} {html}</tr>{html} {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}KeyStorePath{html}</tt>{html}{html}</td>{html} {html}<td align="center">{html}Yes{html}</td>{html} {html}<td align="left">{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}KeyStorePassword{html}</tt>{html}{html}</td>{html} {html}<td align="center">{html}Yes{html}</td>{html} {html}<td align="left">{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}KeyStoreKeyAlias{html}</tt>{html}{html}</td>{html} {html}<td align="center">{html}Yes{html}</td>{html} {html}<td align="left">{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}KeyStoreKeyPassword{html}</tt>{html}{html}</td>{html} {html}<td align="center">{html}Yes{html}</td>{html} {html}<td align="left">{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}KeyStoreType{html}</tt>{html}{html}</td>{html} {html}<td align="center">{html}No{html}</td>{html} {html}<td align="left">{html}{html}<tt>{html}JCEKS{html}</tt>{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}Cipher{html}</tt>{html}{html}</td>{html} {html}<td align="center">{html}No{html}</td>{html} {html}<td align="left">{html}{html}<tt>{html}DESede/CBC/PKCS5Padding{html}</tt>{html}{html}</td>{html} {html}</tr>{html} {html}<tr>{html} {html}<td align="left">{html}{html}<tt>{html}MAC{html}</tt>{html}{html}</td>{html} {html}<td align="center">{html}No{html}</td>{html} {html}<td align="left">{html}{html}<tt>{html}HmacSHA1{html}</tt>{html}{html}</td>{html} {html}</tr>{html} {html}</table>{html} See the _Shibboleth Identity Provider Deployment Guide_ for more detail regarding {{CryptoShibHandle}} . See http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html for general information about cryptographic implementations, conventions and syntax. Some examples of {{NameMapping}} elements are given below: {code} <!-- SharedMemoryShibHandle configuration (default) --> <NameMapping xmlns="urn:mace:shibboleth:namemapper:1.0" id="..." format="urn:mace:shibboleth:1.0:nameIdentifier" handleTTL="1800" type="SharedMemoryShibHandle"/> <!-- CryptoShibHandle configuration --> <NameMapping xmlns="urn:mace:shibboleth:namemapper:1.0" id="..." format="urn:mace:shibboleth:1.0:nameIdentifier" handleTTL="1800" type="CryptoHandleGenerator"> <KeyStorePath>...</KeyStorePath> <KeyStorePassword>...</KeyStorePassword> <KeyStoreKeyAlias>...</KeyStoreKeyAlias> <KeyStoreKeyPassword>...</KeyStoreKeyPassword> <KeyStoreType>JCEKS</KeyStoreType> <!-- default --> <Cipher>DESede/CBC/PKCS5Padding</Cipher> <!-- default --> <MAC>HmacSHA1</MAC> <!-- default --> </NameMapping <!-- PrincipalNameIdentifier configuration (test) --> <NameMapping xmlns="urn:mace:shibboleth:namemapper:1.0" id="..." format="urn-x:test:NameIdFormat1" type="Principal"/> <!-- X509SubjectNameNameIdentifierMapping configuration (e-auth) --> <NameMapping xmlns="urn:mace:shibboleth:namemapper:1.0" id="..." format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName" regex=".*uid=([^,/]+).*" qualifier="https://idp.org/shibboleth" internalNameContext="uid=%PRINCIPAL%/e-auth" class="edu.internet2.middleware.shibboleth.common.provider.X509SubjectNameNameIdentifierMapping"/> {code} Only one {{NameMapping}} element per format is allowed. If you wanted to associate a single NameIdentifierFormat with multiple mappings, a custom {{MappingManager}} must be written. {code} <!-- hypothetical configuration (e.g.) --> <NameMapping xmlns="urn:mace:shibboleth:namemapper:1.0" id="..." format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName" class="edu.uiuc.ncsa.shibboleth.plugins.MappingManager"> <NameMapping id="..." format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName" regex=".*uid=([^,/]+).*" qualifier="https://idp.org/shibboleth" internalNameContext="uid=%PRINCIPAL%/e-auth" class="edu.internet2.middleware.shibboleth.common.provider.X509SubjectNameNameIdentifierMapping"/> <NameMapping id="..." format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName" class="edu.uiuc.ncsa.shibboleth.plugins.X509SubjectNameNameIdentifierMapping"/> </NameMapping> {code} Presumably, the {{MappingManager}} invokes each of the nested mappings \(in order\) until the mapping succeeds. For example, suppose an attribute query is sent to the AA with the following {{NameIdentifier}} element: {code} <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName" NameQualifier="https://idp.org/shibboleth"> <!-- insert X.509 Subject DN here --> </saml:NameIdentifier> {code} The AA consults origin.xml and finds a {{NameMapping}} element such as the last one above. Since the value of the {{Format}} attribute of the {{NameIdentifier}} element matches the value of the {{format}} attribute of the containing {{NameMapping}} element, the AA invokes the {{MappingManager}} as given by the {{class}} attribute. The {{MappingManager}} then applies each of the nested mappings in turn. -\- Main.TomScavo \- 13 Apr 2005 |
Page Comparison
General
Content
Integrations