This reference provides the REST API configurations needed to set up DUO proxy authentication with both RADIUS and LDAP providers, including provider setup, login domain creation, and GUI access configuration.
REST API URL
The URL for all XML data:
POST https://{{apichost}}/api/node/mo/.xml
RADIUS configuration
Add DUO RADIUS proxy provider:
<aaaRadiusProvider authPort="1812" authProtocol="pap" descr="duoradius"
dn="uni/userext/duoext/radiusprovider-duoproxy.host.com"
monitorServer="disabled" monitoringUser=""
name="duoproxy.host.com" key="mypasswd"
retries="1" status="created" timeout="30"/>
Add Login Domain with DUO RADIUS proxy provider:
<aaaUserEp descr="" dn="uni/userext" name="" pwdStrengthCheck="yes" rn="" status="modified">
<aaaLoginDomain descr="" name="DuoRadDom" rn="logindomain-DuoRadDom" status="created">
<aaaDomainAuth descr="" name="" providerGroup="DuoRadDom" realm="radius" realmSubType="duo" rn="domainauth" status="created"/>
</aaaLoginDomain>
<aaaDuoEp descr="" name="" retries="1" rn="duoext" status="modified" timeout="40">
<aaaDuoProviderGroup name="DuoRadDom" providerType="radius" secFacAuthMethods="auto,push"
rn="duoprovidergroup-DuoRadDom" status="created">
<aaaProviderRef descr="duoradproxy" name="duoproxy.host.com" order="1"
rn="providerref-duoproxy.host.com" status="created" />
</aaaDuoProviderGroup>
</aaaDuoEp>
</aaaUserEp>
LDAP configuration
Add DUO LDAP proxy provider with the attribute Cisco AVPair :
<aaaLdapProvider name="duoproxy.host.com"
SSLValidationLevel="strict"
attribute="CiscoAvPair"
basedn="CN=Users,DC=host,DC=com"
dn="uni/userext/duoext/ldapprovider-duoproxy.host.com" enableSSL="no" filter="cn=$userid"
monitorServer="disabled"
port="389" retries="1"
rootdn="CN=admin,CN=Users,DC=host,DC=com"
timeout="60"
key="12345"/>
Add DUO LDAP proxy provider with the attribute memberOf :
<aaaLdapProvider name="duoproxy.host.com"
SSLValidationLevel="strict"
attribute="memberOf"
basedn="CN=Users,DC=host,DC=com"
dn="uni/userext/duoext/ldapprovider-duoproxy.host.com" enableSSL="no" filter="cn=$userid"
monitorServer="disabled"
port="389" retries="1"
rootdn="CN=admin,CN=Users,DC=host,DC=com"
timeout="60"
key="12345"/>
Add LDAP GroupMap rule:
<aaaLdapGroupMapRule name="DuoEmpRule" dn="uni/userext/duoext/ldapgroupmaprule-DuoEmpRule"
groupdn="CN=Employee,CN=Users,DC=host,DC=com" status="created">
<aaaUserDomain name="all" rn="userdomain-all" status="created,modified">
<aaaUserRole name="fabric-admin" privType="writePriv" rn="role-fabric-admin" status="created,modified"/>
</aaaUserDomain>
</aaaLdapGroupMapRule>
Add LDAP GroupMap:
<aaaLdapGroupMap name="DuoEmpGroupMap" dn="uni/userext/duoext/ldapgroupmap-DuoEmpGroupMap" status="created">
<aaaLdapGroupMapRuleRef name="DuoEmpRule" rn="ldapgroupmapruleref-DuoEmpRule" status="created"/>
</aaaLdapGroupMap>
Add DUO LDAP Login Domain using GroupMap:
<polUni>
<aaaUserEp dn="uni/userext" name="" pwdStrengthCheck="yes" rn="" status="modified">
<aaaDuoEp attribute="memberOf" basedn="" filter="sAMAccountName=$userid"
name="" retries="1" rn="duoext" status="modified" timeout="30">
<aaaDuoProviderGroup name="DuoLdapDom" authChoice="LdapGroupMap" providerType="ldap"
rn="duoprovidergroup-DuoLdapDom" ldapGroupMapRef="DuoEmpGroupMap" secFacAuthMethods="auto,push" status="modified">
<aaaProviderRef name="duoproxy.host.com" order="1"
rn="providerref-duoproxy.host.com" status="modified"/>
</aaaDuoProviderGroup>
</aaaDuoEp>
<aaaLoginDomain name="DuoLdapDom" rn="logindomain-DuoLdapDom" status="modified">
<aaaDomainAuth name="" providerGroup="DuoLdapDom" realm="ldap" realmSubType="duo" rn="domainauth" status="modified"/>
</aaaLoginDomain>
</aaaUserEp>
</polUni>
GET login domain for GUI
The GET URL for login domains:
GET https://apic.host.com/api/aaaListDomains.json
{ "totalCount": "5",
"imdata": [{
"name": "DuoRadDom",
"type": "DUO",
"secAuths": "auto,push"
}, {
"name": "DuoLdapDom",
"type": "DUO",
"secAuths": "auto,push"
}, {
"name": "RadDom",
"type": "OTHER"
}, {
"name": "LdapDom",
"type": "OTHER"
}, {
"name": "DefaultAuth",
"guiBanner": "",
"type": "OTHER"
}
] }