<?xml version="1.0" encoding="UTF-8"?>

<resolver:AttributeResolver
        xmlns:resolver="urn:mace:shibboleth:2.0:resolver" 
        xmlns:pc="urn:mace:shibboleth:2.0:resolver:pc"
        xmlns:ad="urn:mace:shibboleth:2.0:resolver:ad" 
        xmlns:dc="urn:mace:shibboleth:2.0:resolver:dc"
        xmlns:enc="urn:mace:shibboleth:2.0:attribute:encoder" 
        xmlns:sec="urn:mace:shibboleth:2.0:security"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd
                            urn:mace:shibboleth:2.0:resolver:pc http://shibboleth.net/schema/idp/shibboleth-attribute-resolver-pc.xsd
                            urn:mace:shibboleth:2.0:resolver:ad http://shibboleth.net/schema/idp/shibboleth-attribute-resolver-ad.xsd
                            urn:mace:shibboleth:2.0:resolver:dc http://shibboleth.net/schema/idp/shibboleth-attribute-resolver-dc.xsd
                            urn:mace:shibboleth:2.0:attribute:encoder http://shibboleth.net/schema/idp/shibboleth-attribute-encoder.xsd
                            urn:mace:shibboleth:2.0:security http://shibboleth.net/schema/idp/shibboleth-security.xsd">


    <!--
    The uid is the closest thing to a "standard" LDAP attribute
    representing a local username, but you should generally *never*
    expose uid to federated services, as it is rarely globally unique.
   
    <resolver:AttributeDefinition id="uid" xsi:type="ad:PrincipalName">
        <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:uid" encodeType="false" />
        <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" encodeType="false" />
    </resolver:AttributeDefinition>
    -->

    <!--
    In the rest of the world, the email address is the standard identifier,
    despite the problems with that practice. Consider making the EPPN
    value the same as your official email addresses whenever possible.
    
    <resolver:AttributeDefinition id="mail" xsi:type="ad:Template">
        <resolver:Dependency ref="uid" />
        <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:mail" encodeType="false" />
        <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" encodeType="false" />
        <ad:Template>
          <![CDATA[
               ${uid}@example.org
          ]]>
        </ad:Template>
        <ad:SourceAttribute>uid</ad:SourceAttribute>
    </resolver:AttributeDefinition>
    -->
    
 <!--
    This is an example of an attribute sourced from a data connector.
    
    <resolver:AttributeDefinition id="eduPersonScopedAffiliation" xsi:type="ad:Scoped" scope="%{idp.scope}" sourceAttributeID="affiliation">
        <resolver:Dependency ref="staticAttributes" />
        <resolver:AttributeEncoder xsi:type="enc:SAML1ScopedString" name="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" encodeType="false" />
        <resolver:AttributeEncoder xsi:type="enc:SAML2ScopedString" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" friendlyName="eduPersonScopedAffiliation" encodeType="false" />
    </resolver:AttributeDefinition>
   -->

    <!-- ========================================== -->
    <!--      Data Connectors                       -->
    <!-- ========================================== -->

  <!--  <resolver:DataConnector id="staticAttributes" xsi:type="dc:Static">
        <dc:Attribute id="affiliation">
            <dc:Value>member</dc:Value>
        </dc:Attribute>
    </resolver:DataConnector>
  -->


<!-- <resolver:AttributeDefinition xsi:type="ad:Simple" id="email" sourceAttributeID="mail">
    <resolver:Dependency ref="openldap" />
    <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:mail" />
    <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" />
</resolver:AttributeDefinition>
-->


	<resolver:AttributeDefinition xsi:type="ad:Simple" id="User.email" sourceAttributeID="mail">
  	<resolver:Dependency ref="openldap" />
  	<resolver:AttributeEncoder xsi:type="enc:SAML2String" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"  name="User.email" friendlyName="User.email" />
	</resolver:AttributeDefinition>

<resolver:AttributeDefinition xsi:type="ad:Simple" id="User.FirstName" sourceAttributeID="givenname">
  	<resolver:Dependency ref="openldap" />
  	<resolver:AttributeEncoder xsi:type="enc:SAML2String" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"  name="User.FirstName" friendlyName="User.FirstName" />
</resolver:AttributeDefinition>

<resolver:AttributeDefinition xsi:type="ad:Simple" id="User.LastName" sourceAttributeID="sn">
  	<resolver:Dependency ref="openldap" />
  	<resolver:AttributeEncoder xsi:type="enc:SAML2String" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" name="User.LastName" friendlyName="User.LastName" />
</resolver:AttributeDefinition>

<resolver:AttributeDefinition xsi:type="ad:Simple" id="User.Username" sourceAttributeID="cn">
        <resolver:Dependency ref="openldap" />
        <resolver:AttributeEncoder xsi:type="enc:SAML2String" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" name="User.Username" friendlyName="User.Username" />
</resolver:AttributeDefinition>


<!-- <resolver:AttributeDefinition xsi:type="ad:Simple" id="NameID" sourceAttributeID="mail"> 
	<resolver:Dependency ref="openldap" />
	<resolver:AttributeEncoder xsi:type="SAML2StringNameID" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" nameFormat="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
</resolver:AttributeDefinition>
-->


<resolver:AttributeDefinition id="NameID" xsi:type="ad:PrincipalName">
        <resolver:Dependency ref="openldap" />
        <resolver:AttributeEncoder xsi:type="enc:SAML1StringNameIdentifier" nameFormat="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
        <resolver:AttributeEncoder xsi:type="enc:SAML2StringNameID" nameFormat="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"  />
    </resolver:AttributeDefinition>


<!-- 
<resolver:AttributeDefinition xsi:type="ad:Simple" id="NameID" sourceAttributeID="mail">
  <resolver:Dependency ref="openldap" />
  <resolver:AttributeEncoder xsi:type="enc:SAML2StringNameID" nameFormat="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" name="NameID" />
</resolver:AttributeDefinition>

-->

	

    <resolver:DataConnector xsi:type="LDAPDirectory" xmlns="urn:mace:shibboleth:2.0:resolver:dc"
                        id="openldap"
                        ldapURL="ldap://ldap-stage.wikitude.com:389"
                        baseDN="dc=com"
                        principal="cn=Manager,dc=com"
                        principalCredential="secret"
                        lowercaseAttributeNames="true"
                        useStartTLS="false">

                        <FilterTemplate>
					        <![CDATA[
					            (mail=${requestContext.principalName})
					        ]]>
    					</FilterTemplate>


    					<ReturnAttributes>cn givenname sn mail</ReturnAttributes> 
 
	</resolver:DataConnector>




</resolver:AttributeResolver>