We&#39;ve deployed it too. I can share configuration.<div><br></div><div>Liam<span></span><br><br>On Wednesday, April 23, 2014, Bryan E. Wooten &lt;<a href="mailto:bryan.wooten@utah.edu">bryan.wooten@utah.edu</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">We are currently deploying Servicenow and it is protected by our Shib IDP.<br>
<br>
I don&#39;t recall any special issues doing the integration. I would be happy<br>
to share any configuration files.<br>
<br>
This may take us a week or 2 to put together as our Shib expert is on<br>
vacation through next week.<br>
<br>
Feel free to contact me off list.<br>
<br>
Regards,<br>
<br>
Bryan<br>
<br>
On 4/23/14 7:31 PM, &quot;Michael A Grady&quot; &lt;<a>mgrady@unicon.net</a>&gt; wrote:<br>
<br>
&gt;<br>
&gt;On Apr 23, 2014, at 6:37 PM, Paul B. Henson wrote:<br>
&gt;<br>
&gt;&gt; I&#39;ve been asked to integrate our shibboleth idp with servicenow. I&#39;ve<br>
&gt;&gt;seen a few postings regarding this, but would like to clarify a couple<br>
&gt;&gt;of issues.<br>
&gt;&gt;<br>
&gt;&gt; They want to exchange metadata in an ad hoc fashion, rather than<br>
&gt;&gt;availing of Incommon (always annoying), but the metadata they supply<br>
&gt;&gt;does not include a certificate? They do consume a certificate from my<br>
&gt;&gt;idp metadata, so can presumably verify the assertions it provides, but<br>
&gt;&gt;with no certificate for their SP, how does the idp verify a request is<br>
&gt;&gt;actually coming from them and not some random imposter?<br>
&gt;<br>
&gt;Tom already answered that, the metadata identifies the endpoint. And at<br>
&gt;least they gave you metadata, for a number of vendors you need to<br>
&gt;hand-craft the SAML metadata for them. (Pretty easy, but yet another<br>
&gt;step.) There are a number of vendors who cannot handle encrypted<br>
&gt;assertions.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; One of the integration guides I was looking at said it required a<br>
&gt;&gt;custom RelyingParty configuration in relying-party.xml so the idp would<br>
&gt;&gt;not try to encrypt assertions; the example config included<br>
&gt;&gt;encryptAssertions=&quot;never&quot;. However, my current default relying party is<br>
&gt;&gt;configured with encryptAssertions=&quot;conditional&quot;, is a separate relying<br>
&gt;&gt;party with an explicit never still required or was that for an older<br>
&gt;&gt;version of the idp?<br>
&gt;&gt;<br>
&gt;<br>
&gt; encryptAssertions=&quot;conditional&quot; means encrypt if there isn&#39;t something<br>
&gt;else providing confidentiality between the sender and the intended<br>
&gt;recipient. And in the standard SAMLv2 POST flow the message is sent to<br>
&gt;the user agent, and then from there to the intended recipient, so there<br>
&gt;isn&#39;t anything else providing that confidentiality -- i.e.<br>
&gt;encryptAssertions=&quot;conditional&quot; essentially means &#39;always&#39; with the<br>
&gt;SAMLv2 POST flow. So you do need to add a special relying party config<br>
&gt;with encryptAssertions=&quot;never&quot;. And not that it usually breaks anything,<br>
&gt;but some of these SPs actually don&#39;t take any attributes, they just use<br>
&gt;the NameID. So you could also add &#39;includeAttributeStatement=&quot;false&quot;&#39; for<br>
&gt;such.<br>
&gt;<br>
&gt;&gt; Evidently they require a NameID format attribute to join to their<br>
&gt;&gt;internal database. Our current configuration only supplies the<br>
&gt;&gt;transientId and eduPersonTargetedID with such an encoding, neither of<br>
&gt;&gt;which is suitable, so it seems a new special attribute must be defined<br>
&gt;&gt;specifically for servicenow that encodes one of our other existing<br>
&gt;&gt;attributes in NameID format? I also read in an older posting that you<br>
&gt;&gt;need to hack the default releaseTransientIdToAnyone policy to explicitly<br>
&gt;&gt;exclude them, is that still true?<br>
&gt;<br>
&gt;Yes, you&#39;d have something like the following example that you&#39;d add to<br>
&gt;your attribute resolver:<br>
&gt;<br>
&gt;    &lt;!-- Generate a SAML email-type NameID from the mail (email)<br>
&gt;attribute --&gt;<br>
&gt;    &lt;resolver:AttributeDefinition xsi:type=&quot;ad:Simple&quot; id=&quot;mailNameID&quot;<br>
&gt;sourceAttributeID=&quot;mail&quot;&gt;<br>
&gt;        &lt;resolver:Dependency ref=&quot;myLDAP&quot; /&gt;<br>
&gt;       &lt;resolver:AttributeEncoder xsi:type=&quot;enc:SAML1StringNameIdentifier&quot;<br>
&gt;<br>
&gt;nameFormat=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot;/&gt;<br>
&gt;       &lt;resolver:AttributeEncoder xsi:type=&quot;enc:SAML2StringNameID&quot;<br>
&gt;xmlns=&quot;urn:mace:shibboleth:2.0:attribute:encoder&quot;<br>
&gt;<br>
&gt;nameFormat=&quot;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&quot; /&gt;<br>
&gt;    &lt;/resolver:AttributeDefinition&gt;<br>
&gt;<br>
&gt;And then, in the attribute filter, something like:<br>
&gt;<br>
&gt;    &lt;!--<br>
&gt;        Release the email address of the user, as the NameID, to Service X<br>
&gt;    --&gt;<br>
&gt;    &lt;afp:AttributeFilterPolicy id=&quot;Service X&quot;&gt;<br>
&gt;        &lt;afp:PolicyRequirementRule<br>
&gt;xsi:type=&quot;basic:AttributeRequesterString&quot;<br>
&gt;value=&quot;<a href="https://www.servicex.com/.." target="_blank">https://www.servicex.com/..</a></blockquote></div>