<div dir="ltr"><div>Hello list,</div><div><br></div><div>sorry for the longer email...</div><div><br></div><div>I just noticed that Keycloak is currently not listed as a </div><div>certified OpenID Connect implementation under:</div><div><a href="http://openid.net/certification/">http://openid.net/certification/</a></div><div><br></div><div>As it turns out one can run the tests oneself by creating a test profile as described here:</div><div><a href="http://openid.net/certification/testing/">http://openid.net/certification/testing/</a></div><div><br></div><div>The OpenID Connect test can be configured here: </div><div><a href="https://op.certification.openid.net:60000/">https://op.certification.openid.net:60000/</a></div><div><br></div><div>I just gave the test a spin by running a Keycloak Application instance </div><div>(Version 1.9.1.Final - as I had that running) embedded in a Spring Boot App </div><div>on Cloud Foundry which I exposed to the <a href="http://op.certification.openid.net">op.certification.openid.net</a> test server.</div><div>... it works and was a quick way to get Keycloak exposed to the test - and yes I know </div><div>this is of course not a prod environment ;-)</div><div><br></div><div>The results looked not bad.</div><div>Note that you need to execute each step manually by clicking on it... </div><div><br></div><div>First run got me 23 green (+2 manually verified) out of 41 tests overall,</div><div>rest was 9 yellow and 6 red.</div><div><br></div><div><div>You can find a screenshot of the overall test results here:</div><div><a href="http://s33.postimg.org/h6zawnbbz/screencapture_op_certification_openid_net_60628.png">http://s33.postimg.org/h6zawnbbz/screencapture_op_certification_openid_net_60628.png</a></div></div><div><br></div><div>I think those tests are a great way to close gaps between specification and implementation </div><div>and help to make Keycloak more compatible.</div><div><br></div><div><div>I also have the logs with the detailed request / response pairs with failed tests and </div><div>explanations.</div><div>Please ping me if you want to have those for investigation  (~600 kb text).</div></div><div><br></div><div>Some of the tests like (&quot;Scope requesting all claims [Basic, Implicit, Hybrid] (OP-scope-All)&quot;) </div><div>were yellow because the some claim information was missing in the user info like:</div><div>[&#39;nickname&#39;, &#39;profile&#39;, &#39;picture&#39;, &#39;website&#39;, &#39;gender&#39;, &#39;birthdate&#39;, &#39;zoneinfo&#39;, &#39;locale&#39;, &#39;updated_at&#39;, &#39;phone_number&#39;, &#39;phone_number_verified&#39;].</div><div><br></div><div>The red tests like &quot;IDToken has kid [Basic, Implicit, Hybrid] (OP-IDToken-kid)&quot; mostly failed due to </div><div>missing values in the response e.g. </div><div>&quot;[verify-signed-idtoken-has-kid]</div><div><span class="" style="white-space:pre">        </span>status: ERROR</div><div><span class="" style="white-space:pre">        </span>description: Verifies that the header of a signed IDToken includes a kid claim.</div><div><span class="" style="white-space:pre">        </span>info: Signed ID Token has no kid: header={u&#39;alg&#39;: u&#39;RS256&#39;}&quot;</div><div><br></div><div>If you want to try it out yourself here are the settings I used for the </div><div>OpenID Connect Test Application:</div><div><br></div><div>--------------------</div><div><br></div><div>Provider configuration:</div><div>&quot;Does the OP have a .well-known/openid-configuration endpoint?&quot;</div><div>yes</div><div><br></div><div>&quot;What is the issuer path for this configuration information?&quot;</div><div><a href="https://tdlabs-keycloak-test2.cfapps.io/realms/test">https://tdlabs-keycloak-test2.cfapps.io/realms/test</a></div><div><br></div><div>&quot;Do the provider support dynamic client registration?&quot;</div><div>no (I know keycloak supports that but I couldn&#39;t get that working)</div><div><br></div><div>&quot;Redirect uris&quot;</div><div><a href="https://op.certification.openid.net:60629/authz_cb">https://op.certification.openid.net:60629/authz_cb</a></div><div><br></div><div>&quot;Client id&quot; </div><div>openid-cert</div><div><br></div><div>&quot;Client secret&quot;</div><div>4692ca28-daad-4d76-aa82-0991e518d931</div><div><br></div><div>Required info</div><div>&quot;Which subject type do you want to use by default?&quot;</div><div>public </div><div><br></div><div>&quot;Which response type should be used by default?&quot;</div><div>code</div><div><br></div><div>&quot;Select supported features&quot;</div><div>JWT signed with algorithm other than &quot;none&quot;</div><div>Encrypted JWT</div><div><br></div><div>Test specific request parameters:</div><div><br></div><div>&quot;Login hint&quot;</div><div><a href="mailto:tom@example.com">tom@example.com</a></div><div>&quot;UI locales&quot;</div><div>en de</div><div>&quot;Claims locales&quot;</div><div>en de</div><div>&quot;Acr values&quot;</div><div>2 1</div><div><br></div><div>&quot;Webfinger url&quot;</div><div><a href="https://example.com/tom">https://example.com/tom</a></div><div><br></div><div>&quot;Webfinger email&quot;</div><div><a href="mailto:tom@example.com">tom@example.com</a></div><div>E.g. <a href="mailto:bob@example.com">bob@example.com</a></div><div><br></div><div>For testing purposes I created a new realm &quot;test&quot; with an additional </div><div>client &quot;openid-cert&quot; with &quot;confidential&quot; access type and </div><div>the valid redirect url provided by the <a href="http://op.certification.openid.net">op.certification.openid.net</a> test server.</div><div><br></div><div><div>I also created a user &quot;tester&quot; for the login tests.</div></div><div><br></div><div>Cheers,</div><div>Thomas</div></div>