<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Good afternoon,<div><br></div><div>    I am trying to setup the Canvas SAML authentication using our Shibboleth v3 IDP instance and am having a heck of a time finding any recent documentation.</div><div><br></div><div>    I believe that Canvas ONLY supports the NameID or eduPersonPrincipalName for the Login Attribute.  So I am attempting to use the NameID that I source on the fly from our sid attribute in the saml-nameid.xml .</div><div><br></div><div>    With the current configs (which I will have available below) I am directed to our IDP from Canvas to authenticate and after successful authentication, I am redirected to canvas and receive an error message "There was a problem logging into Everett Community College".</div><div><br></div><div><br></div><div><b>    metadata-providers.xml</b></div><div><b><br></b></div></div></div></div></div></div></div></div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div><MetadataProvider id="CanvasMetadata"</div><div>                 xsi:type="FileBackedHTTPMetadataProvider"</div><div>                 backingFile="/opt/shibboleth-idp/metadata/canvas-metadata.xml"</div><div>                 metadataURL="<a href="https://everettcc.instructure.com/saml2">https://everettcc.instructure.com/saml2</a>"/></div></div></div></div></div></div></div></div></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div><br></div><div><b>    attribute-resolver.xml</b></div><div><br></div></div></div></div></div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><div><div><div><div><div><div><div><AttributeDefinition xsi:type="Simple" id="sid" sourceAttributeID="employeenumber"></div></div></div></div></div></div></div></div></div><div><div><div><div><div><div><div><div><div>    <Dependency ref="389DSLDAP" /></div></div></div></div></div></div></div></div></div><div><div><div><div><div><div><div><div><div>    <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:uid" encodeType="false" /></div></div></div></div></div></div></div></div></div><div><div><div><div><div><div><div><div><div>    <AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="sid" encodeType="false" /></div></div></div></div></div></div></div></div></div><div><div><div><div><div><div><div><div><div></AttributeDefinition></div></div></div></div></div></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div><br></div></div></div></div></div></div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><b>    attribute-filter.xml</b></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div><div><br></div><div><div><!-- For Canvas Testing --></div><div>    <AttributeFilterPolicy id="InstructureCanvasPolicy"></div><div>        <PolicyRequirementRule xsi:type="Requester" value="<a href="http://everettcc.instructure.com/saml2">http://everettcc.instructure.com/saml2</a>"/></div><div><br></div><div>        <AttributeRule attributeID="NameID"></div><div>            <PermitValueRule xsi:type="ANY"/></div><div>        </AttributeRule></div><div><br></div><div>        <AttributeRule attributeID="sid"></div><div>            <PermitValueRule xsi:type="ANY"/></div><div>        </AttributeRule></div><div><br></div><div>    </AttributeFilterPolicy></div></div></div><div><br></div><div><br></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><b>    saml-nameid.xml</b></div><div><b><br></b></div></div></div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div><!-- NEW WAY PER SP!!!! JB 20190520 --></div><div><bean parent="shibboleth.SAML2AttributeSourcedGenerator"</div><div>    p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"</div><div>    p:attributeSourceIds="#{ {'sid'} }"></div><div><br></div><div>    <property name="activationCondition"></div><div>        <bean parent="shibboleth.Conditions.RelyingPartyId"</div><div>            c:candidate="<a href="http://everettcc.instructure.com/saml2">http://everettcc.instructure.com/saml2</a>" /></div><div>    </property></div><div></bean></div><div style="font-weight:bold"><br></div></div></div></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div>    <b>relying-party.xml</b></div><div><b><br></b></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div><div><!-- Canvas--></div><div><bean parent="RelyingPartyByName" c:relyingPartyIds="<a href="http://everettcc.instructure.com/saml2">http://everettcc.instructure.com/saml2</a>"></div><div>   <property name="profileConfigurations"></div><div><span style="white-space:pre">          </span> <list></div><div><span style="white-space:pre">                        </span> <bean parent="Shibboleth.SSO" /></div><div><span style="white-space:pre">                    </span> <bean parent="SAML2.SSO" </div><div><span style="white-space:pre">                                     </span>p:encryptAssertions="false"</div><div><span style="white-space:pre">                                 </span>p:signAssertions="false"</div><div><span style="white-space:pre">                                    </span>p:encryptNameIDs="false"</div><div><span style="white-space:pre">                                    </span>p:nameIDFormatPrecedence="#{{'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified'}}" /></div><div><span style="white-space:pre">                       </span><ref bean="SAML2.Logout" /></div><div><span style="white-space:pre">           </span></list></div><div>   </property></div><div></bean></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><br class="gmail-Apple-interchange-newline"></div></div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div><br></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>    Here is what I see in the <b>idp-process.log</b> after a successful authentication, the population of NameID with the sid attribute and the release of the sid (but not the NameID?).</div><div><br></div></div></div></div></div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div>2019-05-20 12:57:07,018 - DEBUG [net.shibboleth.idp.saml.attribute.encoding.AbstractSAMLAttributeEncoder:154] - Beginning to encode attribute sid</div><div>2019-05-20 12:57:07,018 - DEBUG [net.shibboleth.idp.saml.attribute.encoding.SAMLEncoderSupport:73] - Encoding value 123456789 of attribute sid</div><div>2019-05-20 12:57:07,019 - DEBUG [net.shibboleth.idp.saml.attribute.encoding.AbstractSAMLAttributeEncoder:191] - Completed encoding 1 values for attribute sid</div><div>2019-05-20 12:57:07,019 - DEBUG [net.shibboleth.idp.saml.saml2.profile.impl.AddAttributeStatementToAssertion:116] - Profile Action AddAttributeStatementToAssertion: Adding constructed AttributeStatement to Assertion _2aa1a4c562370d0af02cbf0adce804ac </div><div>2019-05-20 12:57:07,023 - DEBUG [net.shibboleth.idp.saml.profile.logic.DefaultNameIdentifierFormatStrategy:124] - Configuration specifies the following formats: [urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified]</div><div>2019-05-20 12:57:07,023 - DEBUG [net.shibboleth.idp.saml.profile.logic.DefaultNameIdentifierFormatStrategy:141] - Metadata did not specify any formats, relying on configuration alone</div><div>2019-05-20 12:57:07,024 - DEBUG [net.shibboleth.idp.saml.nameid.impl.AttributeSourcedSAML2NameIDGenerator:197] - <b>Checking for source attribute sid</b></div><div>2019-05-20 12:57:07,024 - DEBUG [net.shibboleth.idp.saml.nameid.impl.AttributeSourcedSAML2NameIDGenerator:216] - <b>Generating NameID from String-valued attribute sid</b></div><div>2019-05-20 12:57:07,041 - DEBUG [net.shibboleth.idp.saml.saml2.profile.delegation.impl.DecorateDelegatedAssertion:592] - Found Assertion with AuthnStatement to decorate in outbound Response</div><div>2019-05-20 12:57:07,041 - DEBUG [net.shibboleth.idp.saml.saml2.profile.delegation.impl.DecorateDelegatedAssertion:290] - Issuance of delegated was not indicated, skipping assertion decoration</div><div>2019-05-20 12:57:07,062 - DEBUG [net.shibboleth.idp.profile.impl.WebFlowMessageHandlerAdaptor:179] - Profile Action WebFlowMessageHandlerAdaptor: Invoking message handler of type 'org.opensaml.messaging.handler.impl.BasicMessageHandlerChain' on OUTBOUND message context</div><div>2019-05-20 12:57:07,062 - DEBUG [net.shibboleth.idp.profile.impl.WebFlowMessageHandlerAdaptor:195] - Profile Action WebFlowMessageHandlerAdaptor: Invoking message handler on message context containing a message of type 'org.opensaml.saml.saml2.core.impl.ResponseImpl'</div><div>2019-05-20 12:57:07,068 - DEBUG [net.shibboleth.idp.saml.profile.impl.SpringAwareMessageEncoderFactory:100] - Looking up message encoder based on binding URI: urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST</div><div>2019-05-20 12:57:07,072 - DEBUG [net.shibboleth.idp.profile.impl.RecordResponseComplete:89] - Profile Action RecordResponseComplete: Record response complete</div><div>2019-05-20 12:57:07,073 - INFO [Shibboleth-Audit.SSO:275] - 20190520T195707Z|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect|_bd08fcee-9195-4093-b01d-428224c54864|<a href="http://everettcc.instructure.com/saml2|http://shibboleth.net/ns/profiles/saml2/sso/browser|https://idp-389ds-test.everettcc.edu/idp/shibboleth|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST|_2dfbb1143bb975720f03d1582c5960c7|jbrock|urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport|sid|123456789|_2aa1a4c562370d0af02cbf0adce804ac|">http://everettcc.instructure.com/saml2|http://shibboleth.net/ns/profiles/saml2/sso/browser|https://idp-389ds-test.everettcc.edu/idp/shibboleth|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST|_2dfbb1143bb975720f03d1582c5960c7|jbrock|urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport|sid|123456789|_2aa1a4c562370d0af02cbf0adce804ac|</a></div></div></div></div></div></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div><br></div><div>    In the Canvas SAML options I have the following :</div><div><br></div></div></div></div></div></div></div></div></div></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Login Attribute : NameID</div></div></div></div></div></div></div></div></div></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Identifier Format : urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</div></div></div></div></div></div></div></div></div></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Authentication Context : No value</div></div></div></div></div></div></div></div></div></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Message Signing : Not Signed</div><div><br></div></div></div></div></div></div></div></div></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div><br></div><div><br></div><div>    Thanks for any advise or working examples.</div><div><br></div><div>~Jeremy</div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr">Jeremiah Brock<br><span style="font-size:12.8px">IT Web, Data and Development Services / Information Security</span><br></div><div dir="ltr">425-259-8707<br><a href="mailto:jbrock@everettcc.edu" target="_blank">jbrock@everettcc.edu</a></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>