The short answer is yes it is possible for isResponse=true and hasCompleted=false. This indicates a logout response has been received from a partner service provider but there are other service providers to logout.
For example, suppose the user is logged in at the IdP, SP1 and SP2. The sequence will be as follows. 1. Call _samlIdentityProvider.InitiateSloAsync to send a logout request to SP1. 2. Call _samlIdentityProvider.ReceiveSloAsync to receive the logout response from SP1 (isResponse=true, hasCompleted=false). 3. A logout request is then sent to SP2 as part of the _samlIdentityProvider.ReceiveSloAsync processing in step 2. 4. Call _samlIdentityProvider.ReceiveSloAsync to receive the logout response from SP2 (isResponse=true, hasCompleted=true).
In the more common case of a single SP, the abbreviated sequence is as follows. 1. Call _samlIdentityProvider.InitiateSloAsync to send a logout request to SP. 2. Call _samlIdentityProvider.ReceiveSloAsync to receive the logout response from SP (isResponse=true, hasCompleted=true).
Regards ComponentSpace Development
|