I haven’t read through the document. But I noticed the following argument regarding Google Open ID’s flaw:
Does the RP check whether the email element in
BRM3 is protected by the IdP’s signature, even though
the protection has been explicitly required by BRM1?
If the problem is RP doesn’t check whether the email element is protected by IDP’s signature, then it is the RP’s fault. ACS should check identity providers’ signatures. But you also need to check ACS’s signature in your own service. Never forget to validate
a token using the key shared between your service and ACS, and never send the key to anything else, such as a client application.