protected Map<String, List<Object>> collectDuoAuthenticationAttributes(final Token result) {
        val attributes = new LinkedHashMap<String, List<Object>>();
        collectDuoAttribute(attributes, "duoExp", CollectionUtils.wrap(result.getExp()));
        collectDuoAttribute(attributes, "duoIss", CollectionUtils.wrap(result.getIss()));
        collectDuoAttribute(attributes, "duoIat", CollectionUtils.wrap(result.getIat()));
        collectDuoAttribute(attributes, "duoAuthTime", CollectionUtils.wrap(result.getAuth_time()));
        collectDuoAttribute(attributes, "duoSub", CollectionUtils.wrap(result.getSub()));
        collectDuoAttribute(attributes, "duoPreferredUsername", CollectionUtils.wrap(result.getPreferred_username()));
        collectDuoAttribute(attributes, "duoAud", CollectionUtils.wrap(result.getAud()));
        return attributes;
    }
An abstraction that encapsulates interaction with
Duo 2fa authentication service via its universal prompt API.

@author Misagh Moayyed
@since 6.3.0
support/cas-server-support-duo-core/src/main/java/org/apereo/cas/adaptors/duo/authn/UniversalPromptDuoSecurityAuthenticationService.java