diff --git a/service_provider.go b/service_provider.go index ae01e233..1541f087 100644 --- a/service_provider.go +++ b/service_provider.go @@ -635,10 +635,15 @@ func (sp *ServiceProvider) validateAssertion(assertion *Assertion, possibleReque } for _, subjectConfirmation := range assertion.Subject.SubjectConfirmations { requestIDvalid := false - for _, possibleRequestID := range possibleRequestIDs { - if subjectConfirmation.SubjectConfirmationData.InResponseTo == possibleRequestID { - requestIDvalid = true - break + + if sp.AllowIDPInitiated { + requestIDvalid = true + } else { + for _, possibleRequestID := range possibleRequestIDs { + if subjectConfirmation.SubjectConfirmationData.InResponseTo == possibleRequestID { + requestIDvalid = true + break + } } } if !requestIDvalid {