Source:
<code>protected void copyAssertionAttributesToUserAttributes(Assertion assertion) { if (!copyAssertionAttributesToUserAttributes) { return; } if (assertion.getPrincipal().getAttributes() == null || assertion.getPrincipal().getAttributes().isEmpty()) { return; } Map<String, List<Object>> attributes = new HashMap<>(); for (Map.Entry<String, Object> attrEntry : assertion.getPrincipal().getAttributes().entrySet()) { log.debug("Adding attribute '{}' from Assertion with value '{}'; runtime type of value is {}", attrEntry.getKey(), attrEntry.getValue(), attrEntry.getValue().getClass().getName()); if (decryptCredentialToPassword && cipher != null && attrEntry.getKey().equals(CREDENTIAL_KEY)) { try { final String encPwd = (String) (attrEntry.getValue() instanceof List ? ((List) attrEntry.getValue()).get(0) : attrEntry.getValue()); <START> byte[] cred64 = Base64.getDecoder().decode(encPwd); <END> cipher.init(Cipher.DECRYPT_MODE, key); final byte[] cipherData = cipher.doFinal(cred64); final String pwd = new String(cipherData); attributes.put(PASSWORD_KEY, Arrays.asList((Object) pwd)); } catch (Exception e) { log.warn("Cannot decipher credential", e); e.printStackTrace(); } } List<Object> valueList = null; if (attrEntry.getValue() instanceof List) { valueList = (List)attrEntry.getValue(); } else { valueList = Arrays.asList(attrEntry.getValue()); } attributes.put(attrEntry.getKey(), valueList); } IAdditionalDescriptors additionalDescriptors = (IAdditionalDescriptors) applicationContext.getBean(SESSION_ADDITIONAL_DESCRIPTORS_BEAN); additionalDescriptors.addAttributes(attributes); }</code><technical_language>Travis CI is throwing a compilation error for find symbol Base64 line 208. ref: <LINK_0></technical_language>

Target:
private void copyAssertionAttributesToUserAttributes(Assertion assertion) { if (!copyAssertionAttributesToUserAttributes) { return; } if (assertion.getPrincipal().getAttributes() == null || assertion.getPrincipal().getAttributes().isEmpty()) { return; } Map<String, List<Object>> attributes = new HashMap<>(); for (Map.Entry<String, Object> attrEntry : assertion.getPrincipal().getAttributes().entrySet()) { log.debug("Adding attribute '{}' from Assertion with value '{}'; runtime type of value is {}", attrEntry.getKey(), attrEntry.getValue(), attrEntry.getValue().getClass().getName()); if (decryptCredentialToPassword && key != null && cipher != null && attrEntry.getKey().equals(CREDENTIAL_KEY)) { try { final String encPwd = (String) (attrEntry.getValue() instanceof List ? ((List) attrEntry.getValue()).get(0) : attrEntry.getValue()); byte[] cred64 = DatatypeConverter.parseBase64Binary(encPwd); cipher.init(Cipher.DECRYPT_MODE, key); final byte[] cipherData = cipher.doFinal(cred64); final Object pwd = new String(cipherData); attributes.put(PASSWORD_KEY, Collections.singletonList(pwd)); } catch (Exception e) { log.warn("Cannot decipher credential", e); } } List<Object> valueList; if (attrEntry.getValue() instanceof List) { valueList = (List<Object>) attrEntry.getValue(); } else { valueList = Collections.singletonList(attrEntry.getValue()); } attributes.put(attrEntry.getKey(), valueList); } IAdditionalDescriptors additionalDescriptors = (IAdditionalDescriptors) applicationContext.getBean(SESSION_ADDITIONAL_DESCRIPTORS_BEAN); additionalDescriptors.addAttributes(attributes); }