<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.E-MailFormatvorlage18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.E-MailFormatvorlage19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.E-MailFormatvorlage20
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="DE" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi all,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I currently have a problem with Umlauts (Ü, Ä, Ö) with my Shibboleth instance.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The output I get (with aacli.sh and over a normal SAML2 session) is this:
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    "name": "sn",<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    "values": [<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        "Müller"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    ]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  },<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">“ü” is the corresponding Latin-1 encoding for Ü, but I can't find where it's coming from.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I'm still running 4.3.0, we are in the process of upgrading. The server uses Jetty9 and java-11-amazon-corretto-jdk.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">We pull attributes out of a MySQL database during attribute resolution. The database is encoded with UTF-8.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The "table" we access, is a view, which is creted from two different tables. Both tables and the view is also set to UTF-8.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">These are my configs and the Log output: <o:p>
</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">gloabl.xml: <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><bean id="shibboleth.MySQLExtraDataSource"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                class="%{mysqlextra.class}"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                p:driverClassName="com.mysql.jdbc.Driver"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                p:jdbcUrl="%{mysqlextra.url}"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                p:username="%{mysqlextra.username}"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                p:password="%{mysqlextra.password}" /><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">idp.properties DB Connection: <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">mysqlextra.class = com.zaxxer.hikari.HikariDataSource<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">mysqlextra.url = jdbc:mysql://REDACTED IP:6033/userdb?useUnicode=true&characterEncoding=UTF-8<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">attribute-resolver.xml:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    <AttributeDefinition id="sn" xsi:type="Template"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        <InputDataConnector ref="mysqlextra" attributeNames="db_surname" /><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        <Template><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">          <![CDATA[<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">               ${db_surname}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">          ]]><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        </Template><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    </AttributeDefinition><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">…<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    <DataConnector xsi:type="RelationalDatabase" id="mysqlextra"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        <BeanManagedConnection>shibboleth.MySQLExtraDataSource</BeanManagedConnection><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            <QueryTemplate><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            <![CDATA[<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                    SELECT email,forename,surname from moodle2_auth where username='$resolutionContext.principal'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            ]]><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            </QueryTemplate><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        <Column columnName="email" attributeID="db_mail" /><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        <Column columnName="forename" attributeID="db_forename" /><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        <Column columnName="surname" attributeID="db_surname" /><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    </DataConnector><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Debug Log Output after requesting Attributes with the aacli.sh Utility:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,701 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Initiating attribute resolution with label: admin/resolvertest<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,701 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Attempting to resolve the following attribute definitions
 [uid, givenName, sn, mail]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,701 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Resolving dependencies for 'uid'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,701 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Finished resolving dependencies for 'uid'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,702 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition:?] - Attribute Definition 'uid': produced an attribute with the following values [StringAttributeValue{value=REDACTED
 USER ID}]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,704 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Attribute definition 'uid' produced an attribute with
 1 values<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,706 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Resolving dependencies for 'givenName'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,706 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Resolving dependencies for 'mysqlextra'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,706 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Finished resolving dependencies for 'mysqlextra'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,706 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Resolving data connector mysqlextra<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,717 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.dc.rdbms.TemplatedExecutableStatementBuilder:?] - Template text SELECT email,forename,surname from moodle2_auth where username='$resolutionContext.principal'
 yields SELECT email,forename,surname from moodle2_auth where username='REDACTED USER ID'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,758 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.dc.rdbms.StringResultMappingStrategy:?] - Remapping column email to db_mail<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,758 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.dc.rdbms.StringResultMappingStrategy:?] - Remapping column forename to db_forename<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,759 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.dc.rdbms.StringResultMappingStrategy:?] - Remapping column surname to db_surname<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,759 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.AbstractDataConnector:?] - Data Connector 'mysqlextra': produced the following 3 attributes during resolution [db_surname, db_mail, db_forename]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,759 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.AbstractDataConnector:?] - Data Connector 'mysqlextra': Attribute 'db_surname': Values '[StringAttributeValue{value=Müller}]'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,759 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.AbstractDataConnector:?] - Data Connector 'mysqlextra': Attribute 'db_mail': Values '[StringAttributeValue{value=REDACTED USER MAIL}]'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,759 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.AbstractDataConnector:?] - Data Connector 'mysqlextra': Attribute 'db_forename': Values '[StringAttributeValue{value=REDACTED USER NAME}]'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,760 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Data connector 'mysqlextra' resolved the following attributes:
 [db_surname, db_mail, db_forename]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,762 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Finished resolving dependencies for 'givenName'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,763 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition:?] - Attribute Definition 'givenName': Determining value 1<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,764 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition:?] - Attribute Definition 'givenName': Adding value 'REDACTED USER NAME' for attribute 'db_forename'
 to the template context<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,764 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition:?] - Attribute Definition 'givenName': Evaluating template<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,766 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition:?] - Attribute Definition 'givenName': Result of template evaluating was 'REDACTED USER NAME'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,766 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition:?] - Attribute Definition 'givenName': produced an attribute with the following values [StringAttributeValue{value=REDACTED
 USER NAME}]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,766 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Attribute definition 'givenName' produced an attribute
 with 1 values<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,766 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Resolving dependencies for 'sn'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,766 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Finished resolving dependencies for 'sn'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,767 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition:?] - Attribute Definition 'sn': Determining value 1<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,767 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition:?] - Attribute Definition 'sn': Adding value 'Müller' for attribute 'db_surname' to the template
 context<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,767 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition:?] - Attribute Definition 'sn': Evaluating template<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,768 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition:?] - Attribute Definition 'sn': Result of template evaluating was 'Müller'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,768 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition:?] - Attribute Definition 'sn': produced an attribute with the following values [StringAttributeValue{value=Müller}]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2025-02-13 09:56:15,768 - 127.0.0.1 - DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:?] - Attribute Resolver 'ShibbolethAttributeResolver': Attribute definition 'sn' produced an attribute with
 1 values<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Things I tried:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">- Adding "?useUnicode=true&characterEncoding=UTF-8" to the jdbc URL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">- Changing locales with ISO-8859-1 to UTF-8 in /etc/jetty9/webdefault.xml<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Does anyone have any other ideas on things I can try to fix this?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Greetings,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Philip<o:p></o:p></span></p>
</div>
</body>
</html>