Since OpenIDConnect is OAuth2 based, the IdP initiated SSO should technically be possible but under one condition - the SP doesn't rely on the state passed down to the IdP in the intial request where the state acts like an anti-forgery token (i.e. upon the return request the returning state is compared to the state sent by the SP in the initial request).
The longer answer would be:
The first step of the authorization code OAuth2 flow is the SP redirecting to the IdP and the IdP redirects back with the one time code. The state
parameter is often passed by the SP and the SP expects the state be passed back.
There are two cases.
The SP verifies the state (e.g. compares it to the state stored in a temp cookie). The IdP SSO won't work as there is no way the IdP knows/forges the state and thus it cannot issue a valid request to the SP that would act as the IdP initiated SSO.
The SP doesn't verify the state. The IdP can then issue the response to a regular OAuth2 request but without the actual request, i.e. it redirects to
https:
and the SP picks the OAuth2 handhshake from there as if it was the SP to first initiate the handshake.
In other words, whether the IdP initiated SSO is possible, it only depends on the SP. Since the spec recommends using state
to prevent such behavior (classified there as CSRF), I believe you are on your own here. Also, read more on possible security issues around the state
parameter.
3.1.2.1. Authentication Request […] state - RECOMMENDED. Opaque value used to maintain state between the request and the callback. Typically, Cross-Site Request Forgery (CSRF, XSRF) mitigation is done by cryptographically binding the value of this parameter with a browser cookie.