Unicon/cas-mfa — pull request #69 by dima767 (2014-05-22 15:29:25+00:00)
Title: Issue#59: another attempt

I wen back to the drawing board and came up with this.

This design and implementation uses ArgumentExtractor machinery to stack
up the mfa method source and creatiion of an appropreate mfa service
based on that. The outer extractor looks for registered service attribute
definition [auth_method] as its source and if supported method is found
uses that to create an mfa service. If not found, ONLY THEN delegates
to a wrapped extractor implementation that uses HTTP request parameter
[authn_method] as its source.

This way, only ONE mfa authn method definition source could be active
at a time which would then result in creation of an appropreate mfa service
instance that is used by the rest of cas-mfa machinery to perform its
mfa authentication function.

The key configuration parts here are:

* Argument extractors:

```xml

```

* Example JSON service definition with `authn_method` extra attribute:

```json
{
"id": 1,
"serviceId": "https://www.google.com",
"extraAttributes": {
"authn_method": "strong_two_factor"
}
}
```