| | 1 | |
| | 2 | Fuze Meeting (Fuzebox) required some tweaking of config files to integrate with Shibboleth IdP. |
| | 3 | |
| | 4 | 1. Do not encrypt SAML response |
| | 5 | 2. Use "basic" rather than "URI" format in encoding attributes |
| | 6 | 3. Release the custom-encoded attributes to Fuze and proactively add mail |
| | 7 | |
| | 8 | 1. Fuze were not able to consume (de-crypt) encrypted assertions and requested the SAML assertion from the IdP be unencrypted. This is provided by adding a custom configuration within relying-party.xml as follows: |
| | 9 | |
| | 10 | {{{ |
| | 11 | <!-- Disable encryption for Fuzebox per vendor request --> |
| | 12 | <RelyingParty id="www.fuzemeeting.com" |
| | 13 | provider="urn:mace:incommon:alaska.edu" |
| | 14 | defaultSigningCredentialRef="IdPCredential" |
| | 15 | defaultAuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"> |
| | 16 | <ProfileConfiguration xsi:type="saml:SAML2SSOProfile" encryptAssertions="never" encryptNameIds="never" /> |
| | 17 | </RelyingParty> |
| | 18 | }}} |
| | 19 | |
| | 20 | 2. Fuze required that the attribute encoding use attrname-format:basic, instead of the default/usual attrname-format:uri. The following distinctively named attributes are encoded in attribute-resolver.xml: |
| | 21 | |
| | 22 | {{{ |
| | 23 | <!-- attributes with non-default encoding; added to meet needs of Fuzebox --> |
| | 24 | |
| | 25 | <resolver:AttributeDefinition id="eduPersonPrincipalName-basic" xsi:type="Simple" |
| | 26 | xmlns="urn:mace:shibboleth:2.0:resolver:ad" |
| | 27 | sourceAttributeID="eduPersonPrincipalName-basic"> |
| | 28 | <resolver:Dependency ref="eduPersonPrincipalName" /> |
| | 29 | <resolver:AttributeEncoder xsi:type="SAML2ScopedString" |
| | 30 | xmlns="urn:mace:shibboleth:2.0:attribute:encoder" |
| | 31 | name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" |
| | 32 | nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" |
| | 33 | friendlyName="eduPersonPrincipalName" /> |
| | 34 | </resolver:AttributeDefinition> |
| | 35 | |
| | 36 | <resolver:AttributeDefinition id="surname-basic" xsi:type="Simple" |
| | 37 | xmlns="urn:mace:shibboleth:2.0:resolver:ad" |
| | 38 | sourceAttributeID="surname"> |
| | 39 | <resolver:Dependency ref="surname" /> |
| | 40 | <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" |
| | 41 | name="urn:oid:2.5.4.4" |
| | 42 | nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" |
| | 43 | friendlyName="sn" /> |
| | 44 | </resolver:AttributeDefinition> |
| | 45 | |
| | 46 | <resolver:AttributeDefinition id="givenName-basic" xsi:type="Simple" |
| | 47 | xmlns="urn:mace:shibboleth:2.0:resolver:ad" |
| | 48 | sourceAttributeID="givenName"> |
| | 49 | <resolver:Dependency ref="givenName" /> |
| | 50 | <resolver:AttributeEncoder xsi:type="SAML2String" |
| | 51 | xmlns="urn:mace:shibboleth:2.0:attribute:encoder" |
| | 52 | nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" |
| | 53 | name="urn:oid:2.5.4.42" friendlyName="givenName" /> |
| | 54 | </resolver:AttributeDefinition> |
| | 55 | |
| | 56 | <resolver:AttributeDefinition id="email-basic" xsi:type="Simple" |
| | 57 | xmlns="urn:mace:shibboleth:2.0:resolver:ad" |
| | 58 | sourceAttributeID="email"> |
| | 59 | <resolver:Dependency ref="email" /> |
| | 60 | <resolver:AttributeEncoder xsi:type="SAML2String" |
| | 61 | xmlns="urn:mace:shibboleth:2.0:attribute:encoder" |
| | 62 | nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" |
| | 63 | name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" /> |
| | 64 | </resolver:AttributeDefinition> |
| | 65 | <!-- END attributes with non-default encoding --> |
| | 66 | |
| | 67 | }}} |
| | 68 | 3. In attribute-filter.xml, added this policy to release the appropriate attributes to Fuze: |
| | 69 | |
| | 70 | {{{ |
| | 71 | <AttributeFilterPolicy id="releaseToFuzebox"> |
| | 72 | <PolicyRequirementRule xsi:type="basic:OR"> |
| | 73 | <basic:Rule xsi:type="basic:AttributeRequesterString" value="www.fuzemeeting.com" /> |
| | 74 | <!-- Second entityID is placeholder --> |
| | 75 | <basic:Rule xsi:type="basic:AttributeRequesterString" value="https://www.fuzemeeting.com/shibboleth" /> |
| | 76 | </PolicyRequirementRule> |
| | 77 | <!-- Vendor demands attributes encoded with nameFormat=...basic rather than default uri --> |
| | 78 | <AttributeRule attributeID="eduPersonPrincipalName-basic"> |
| | 79 | <PermitValueRule xsi:type="basic:ANY" /> |
| | 80 | </AttributeRule> |
| | 81 | <!-- Vendor assumes ePPN scoped identifier is also email; send separate email proactively --> |
| | 82 | <AttributeRule attributeID="email-basic"> |
| | 83 | <PermitValueRule xsi:type="basic:ANY" /> |
| | 84 | </AttributeRule> |
| | 85 | <AttributeRule attributeID="surname-basic"> |
| | 86 | <PermitValueRule xsi:type="basic:ANY" /> |
| | 87 | </AttributeRule> |
| | 88 | <AttributeRule attributeID="givenName-basic"> |
| | 89 | <PermitValueRule xsi:type="basic:ANY" /> |
| | 90 | </AttributeRule> |
| | 91 | <AttributeRule attributeID="transientId"> |
| | 92 | <PermitValueRule xsi:type="basic:ANY" /> |
| | 93 | </AttributeRule> |
| | 94 | </AttributeFilterPolicy> |
| | 95 | }}} |
| | 96 | |
| | 97 | The URL for Fuze Meeting relying on UA authentication is: |
| | 98 | http://alaskaedu.fuze.me/login |