<div dir="ltr">Hi Bill,<div><br></div><div>Yes, a NPE. Here is the stack trace.  Sorry meant  to include it in the original message.</div><div><br></div>







<p class=""><span class="">Caused by: java.lang.NullPointerException</span></p>
<p class=""><span class=""><span class="">        </span>at org.keycloak.protocol.oidc.mappers.OIDCAttributeMapperHelper.mapAttributeValue(OIDCAttributeMapperHelper.java:64)</span></p>
<p class=""><span class=""><span class="">        </span>at org.keycloak.protocol.oidc.mappers.OIDCAttributeMapperHelper.mapClaim(OIDCAttributeMapperHelper.java:78)</span></p>
<p class=""><span class=""><span class="">        </span>at org.keycloak.protocol.oidc.mappers.UserAttributeMapper.setClaim(UserAttributeMapper.java:89)</span></p>
<p class=""><span class=""><span class="">        </span>at org.keycloak.protocol.oidc.mappers.UserAttributeMapper.transformIDToken(UserAttributeMapper.java:95)</span></p>
<p class=""><span class=""><span class="">        </span>at org.keycloak.protocol.oidc.TokenManager.transformIDToken(TokenManager.java:421)</span></p>
<p class=""><span class=""><span class="">        </span>at org.keycloak.protocol.oidc.TokenManager$AccessTokenResponseBuilder.generateIDToken(TokenManager.java:571)</span></p>
<p class=""><span class=""><span class="">        </span>at org.keycloak.protocol.oidc.endpoints.TokenEndpoint.buildAuthorizationCodeAccessTokenResponse(TokenEndpoint.java:249)</span></p>
<p class=""><span class=""><span class="">        </span>at org.keycloak.protocol.oidc.endpoints.TokenEndpoint.build(TokenEndpoint.java:106)</span></p>
<p class=""><span class=""><span class="">        </span>at sun.reflect.GeneratedMethodAccessor258.invoke(Unknown Source)</span></p>
<p class=""><span class=""><span class="">        </span>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</span></p>
<div>at java.lang.reflect.Method.invoke(Method.java:497)</div><div>...</div><div><br></div><div>Thanks</div><div>Jeff</div><div>  </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 20, 2015 at 2:30 PM, Jeff Macomber <span dir="ltr">&lt;<a href="mailto:jeff.macomber@modernizingmedicine.com" target="_blank">jeff.macomber@modernizingmedicine.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">HI,<div><br></div><div>I believe i have come across a defect in the OIDCAttributeMapperHelper class.  The issue occurs when you have a String Attribute which is set with no value using a custom federation provider.  The code blows up on the line:</div><div>return attributeValue.toString(); (Line 64)<br></div><div><br></div><div>in the section of code:</div><div><div>String type = mappingModel.getConfig().get(JSON_TYPE);</div><div>if (type == null) return attributeValue;</div><div>if (type.equals(&quot;boolean&quot;)) {</div><div>     if (attributeValue instanceof Boolean) return attributeValue;</div><div>     if (attributeValue instanceof String) return Boolean.valueOf((String)attributeValue);</div><div>     throw new RuntimeException(&quot;cannot map type for token claim&quot;);</div><div>} else if (type.equals(&quot;String&quot;)) {</div><div>     if (attributeValue instanceof String) return attributeValue;</div><div>     return attributeValue.toString();</div><div>} else if (type.equals(&quot;long&quot;)) {</div><div>     if (attributeValue instanceof Long) return attributeValue;</div><div>     if (attributeValue instanceof String) return Long.valueOf((String)attributeValue);</div><div>     throw new RuntimeException(&quot;cannot map type for token claim&quot;);</div><div>} else if (type.equals(&quot;int&quot;)) {</div><div>     if (attributeValue instanceof Integer) return attributeValue;</div><div>     if (attributeValue instanceof String) return Integer.valueOf((String)attributeValue);</div><div>     throw new RuntimeException(&quot;cannot map type for token claim&quot;);</div><div>}</div><div>return attributeValue;</div></div><div><br></div><div>The attribute exists with no value which causes the attrbuteValue to be null and there is no check for null at that point.  I would expect it would return empty string if the type is string and the value is null.</div><div><br></div><div>Thanks,</div><div>jeff</div></div>
</blockquote></div><br></div>