Hi.
I've done some double-checking, to be sure, and it seems to work for me, in standalone setup. I'll list all the steps I used below, just for the record, before moving to the next phase (making it wokring in Docker). The doc itself a bit overcomplicated and outdated, it seems.
1. The attributes still need to be added, for that schema needs to be modified, as docs instruct; ext attributes are needed: "IDPEmail" and "objectguid". "ImmutableID" isn't really required; for "objectguid", you still also need to modify ` /etc/gluu/conf/gluu-ldap.properties` as mentioned in the doc (unless the mapping for binary attribute "objectGUID" is already there OOTB in your setup)
2. Cache Refresh needs to be configured to populate these two new attributes; it needs to import the two attributes mentioned above, in addition to the set of basice attributes ("uid", "mail", "phone" etc); I think with some remapping it's possible to not create a separate "IDPEmail" attribute that just stores the same value as "mail" as well, but that will require more templates customization, so using a separate attribute is simpler, unless it makes your database significantly larger; when using "IDPEmail" as a separate attribute, you need to add mapping for it to CR's settings, using "mail" attribute as source
3. Creating SAML TR for O365 should be straightforward, make sure you release "IDPEmail" and "objectguid" attributes there
4. To make nameid for O365 work, we need to modify just one file, `/opt/shibboleth-idp/conf/saml-nameid.xml`; that can be done either manually in the file itself (but these changes won't persist for long; useful for quick testing still), or by modifying oxTrust's templates files.
The change on itself is simple, just one fragment is needs to be added there:
```
<bean parent="shibboleth.SAML2AttributeSourcedGenerator"
p:format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
p:attributeSourceIds="#{ {'objectguid'} }">
<property name="activationCondition">
<bean parent="shibboleth.Conditions.RelyingPartyId" c:candidates="#{{'urn:federation:MicrosoftOnline'}}" />
</property>
</bean>
```
For reference, I'm also attaching the template file that does the same, but with persisting the change (needs to be placed under `/opt/gluu/jetty/identity/conf/shibboleth3/idp/` for that).
With these changes, it should start to return the expected nameid to Office.
Hope that helps. Also, if you have some issues with configuring Cache Refresh, but need to do a quick testing, you can just add "IDPEmail" and "objectguid" attributes to your test user manually, that would do
I'll provide steps for configuring this all in Docker setup very soon, again, terribly sorry for the long delay.