# these are properties to add to grouper-loader.properties # group duo admin domain name credentials grouperDuo.adminIntegrationKey = grouperDuo.adminSecretKey = grouperDuo.adminDomainName = # put groups in here which go to duo, the name in duo will be the extension here grouperDuo.folder.name.withDuoGroups = a:b:c # put the comma separated list of sources to send to duo grouperDuo.sourcesForSubjects = someSource # either have id for subject id or an attribute for the duo username (e.g. netId) grouperDuo.subjectAttributeForDuoUsername = id #quartz cron-like schedule for daily duo full sync, the default is 7am every day: 0 0 5 * * ? #blank for dont schedule grouperDuo.daemonCron = 0 0 5 * * ? # set to true to not run daemons here grouperDuo.dontRunDaemonsHere = false # if this is run in a cluster and should only run on certain nodes, set the name(s) here (from hostname command) grouperDuo.runOnlyOnServerNames = # is grouper the true system of record, delete duo groups which dont exist in grouper grouperDuo.deleteGroupsInDuoWhichArentInGrouper = true # configure the duo change log consumer changeLog.consumer.duo.class = edu.internet2.middleware.grouperDuo.GrouperDuoChangeLogConsumer #the quartz cron is a cron-like string. it defaults to every minute on the minute (since the temp to change log job runs #at 10 seconds to each minute). it defaults to this: 0 * * * * ? #though it will stagger each one by 2 seconds # http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger changeLog.consumer.duo.quartzCron = # Schedule full refresh otherJob.duo.class = edu.internet2.middleware.grouperDuo.GrouperDuoFullRefresh otherJob.duo.quartzCron = 0 0 5 * * ?
This runs in the loader. Get the grouper-misc/grouper-duo project. Build (or download 2.1.5, 2.2.2) the jar for the grouper duo source. Add in the duo client jars (4 of them). Configure the grouper-loader.properties. Note, the Duo client runs in Java7+.