The topic of when you are allowed to redirect or use a canonical from page A to page B is always an interesting topic.
Google's John Mueller addressed the topic in a recent Google Webmaster Help thread and he was very careful in the word selection this time.
He said that your pages do not need to be "identical" but rather they only need to be "equivalent" when communicating to Google that the pages should be redirected to each other via a canonical.
John said in the thread:
If these pages are equivalent, even if they're not 100% identical, I'd use a rel=canonical here. With that, all of the signals (such as links to those pages) that we have for the "set" of URLs will be combined in your preferred version. Using a noindex on the other hand would result in only one page being indexed, with all the other pages from that set - and any associated signals we might have - dropping out.
He said the pages do not need to be 100% identical to use it and in fact, even if they are just equivalent, you should use the canonical and don't noindex the page because using the canonical will pass the signals from the old page to the new page.
How do you define equivalent? Well, it means equal in value, amount, function, meaning and so on. So not an exact match but the same output.
Forum discussion at Google Webmaster Help.