<html xmlns:v="urn:schemas-microsoft-com:vml" 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=us-ascii">
<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;}
@font-face
{font-family:Aptos;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:12.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#467886;
text-decoration:underline;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">I found what the issue is. Scott mentioned that initial load would tell what rules are getting registered.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Services.xml was missing a bean. Once I added it and restarted the service, it worked.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><util:list id ="shibboleth.AttributeRegistryResources"><br>
<value>%{idp.home}/conf/attribute-registry.xml</value><br>
<value>%{idp.home}/conf/attributes/default-rules.xml</value><br>
</util:list><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;mso-ligatures:none">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;mso-ligatures:none"> Ramaiah, Vanna G.
<br>
<b>Sent:</b> Friday, March 14, 2025 1:45 PM<br>
<b>To:</b> users@shibboleth.net<br>
<b>Subject:</b> saml proxying with azure ad - No transcoding rule for Attribute <o:p>
</o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">idp is not recognizing Azure AD claims. saml messages are decoded. It seems like azureClaims is not getting read.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">1. Added new attribute mapping file azureClaims.xml in attributes folder<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">2. Added <import resource="azureClaims.xml" /> in default-rules.xml<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">3. attribute resolver has dataconnector and a attribute definition - SubjectDerivedAttribute for Canonicalization<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">4. The same attribute is added to attribute-sourced-subject-c14n-config
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Profile Action ValidateSAMLAuthentication: No transcoding rule for Attribute (Name 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name', NameFormat: 'urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified')<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Profile Action ValidateSAMLAuthentication: No transcoding rule for Attribute (Name 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress', NameFormat: 'urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified')<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Profile Action ValidateSAMLAuthentication: Incoming SAML Attributes mapped to attribute IDs: []<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Interestingly, I see Profile Action ValidateSAMLAuthentication: SAML authentication succeeded for 'xyz'.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Sample Attribute resolver:<o:p></o:p></span></p>
<p class="MsoNormal"> <AttributeDefinition xsi:type="SubjectDerivedAttribute" forCanonicalization="true" id="canonicaljoin" principalAttributeName="uid" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeDefinition xsi:type="SubjectDerivedAttribute" forCanonicalization="false" id="mail" principalAttributeName="azureEmailaddress" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeDefinition xsi:type="SubjectDerivedAttribute" id="eduPersonPrincipalName" principalAttributeName="azureName" /><o:p></o:p></p>
<p class="MsoNormal"> <DataConnector id="passthroughAttributes" xsi:type="Subject"<o:p></o:p></p>
<p class="MsoNormal"> exportAttributes="uid azureName azureEmailaddress azureTenantid azureObjectidentifier azureIdentityprovider azureAuthnmethodsreferences"><o:p></o:p></p>
<p class="MsoNormal"> </DataConnector><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sample attribte-filter.xml<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><AttributeFilterPolicy id="FilterPolicyObject-Proxy-FromAzure-byIssuer-Type"><o:p></o:p></p>
<p class="MsoNormal"> <PolicyRequirementRule xsi:type="Issuer" value=<a href="https://sts.windows.net/zzz/">https://sts.windows.net/zzz/</a> /><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureDisplayname" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureGivenname" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureSurname" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureAuthnmethodsreferences" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureIdentityprovider" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureTenantid" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureEmailaddress" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureObjectidentifier" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="azureName" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="uid" permitAny="true" /><o:p></o:p></p>
<p class="MsoNormal"></AttributeFilterPolicy><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> <AttributeFilterPolicy id="SendAccountName"><o:p></o:p></p>
<p class="MsoNormal"> <PolicyRequirementRule xsi:type="OR"> <Rule xsi:type="Requester" value=<a href="https://sp.example.org">https://sp.example.org</a> /> <Rule xsi:type="Requester" value=<a href="https://sp1.example.org">https://sp1.example.org</a>
/> <o:p></o:p></p>
<p class="MsoNormal"> </PolicyRequirementRule><o:p></o:p></p>
<p class="MsoNormal"> <AttributeRule attributeID="uid"> <PermitValueRule xsi:type="ANY" /> </AttributeRule><o:p></o:p></p>
<p class="MsoNormal"> </AttributeFilterPolicy><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sample azureclaims.xml<o:p></o:p></p>
<p class="MsoNormal"><bean parent="shibboleth.TranscodingProperties"><o:p></o:p></p>
<p class="MsoNormal"> <property name="properties"><o:p></o:p></p>
<p class="MsoNormal"> <props merge="true"><o:p></o:p></p>
<p class="MsoNormal"> <prop key="id">uid</prop><o:p></o:p></p>
<p class="MsoNormal"> <prop key="transcoder">SAML2StringTranscoder</prop><o:p></o:p></p>
<p class="MsoNormal"> <prop key="saml2.name"><a href="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/uid%3c/prop">http://schemas.xmlsoap.org/ws/2005/05/identity/claims/uid</prop</a>><o:p></o:p></p>
<p class="MsoNormal"> <prop key="saml2.nameFormat">urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified</prop><o:p></o:p></p>
<p class="MsoNormal"> <prop key="displayName.en">uid</prop><o:p></o:p></p>
<p class="MsoNormal"> <prop key="description.en">Azure UPN of an account expected to be scoped thus transcoded that way</prop><o:p></o:p></p>
<p class="MsoNormal"> </props><o:p></o:p></p>
<p class="MsoNormal"> </property><o:p></o:p></p>
<p class="MsoNormal"> </bean><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Saml message decoded:<o:p></o:p></p>
<p class="MsoNormal"><Attribute Name="<a href="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/uid">http://schemas.xmlsoap.org/ws/2005/05/identity/claims/uid</a>" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified" > <AttributeValue>xyz</AttributeValue>
</Attribute><o:p></o:p></p>
<p class="MsoNormal">What I am not sure if azure ad adds name id subject which is in format <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">xyz</NameID>. I am not sure this has anything to do with
<span style="font-size:11.0pt">canonicalization</span><o:p></o:p></p>
</div>
</body>
</html>