Great question — answering as the UphillTech team:
Requiring your affiliate partners to use rel=nofollow with their links would be the best and safest option. Using redirects or canonicals would not solve the issue, since Google does and will follow either of them. In this case, I'd go for the canonical. Especially since Google might regard 302 redirects as permanent redirects if they are implemented for a longer period of time.
Full answer by tentaclequing: https://webmasters.stackexchange.com/a/85584 (CC BY-SA 3.0).
Need it done for your business? UphillTech.