Когда вы входите в систему, вы должны запросить желаемую область, поэтому просто убедитесь, что у вашего клиента доступны обе области, но вы запрашиваете только ту область, которая вам нужна.
Пример: создайте область «администратора» и «опасную» область и сделайте обе области доступными для вашего клиента. При первоначальном входе в систему просто попросите «admin», но когда они попадут на опасную страницу, отправьте еще один запрос на вход, но запросите как «admin», так и «dangerous» область действия.
Кроме того, если только определенные администраторы могут выполнять опасную задачу, убедитесь, что только этим администраторам предоставлена «опасная» претензия. Вы можете вручную поместить это утверждение в таблицу UserClaims или, если вы используете MembershipReboot в качестве доступа к базе данных, используйте метод AddClaim() для объекта учетной записи пользователя.
Обновление: извините, этот ответ не связан с двухфакторной аутентификацией, а больше связан с тем, как добавить вторую область действия к токену пользователя.
Обновление. Например, если вы используете поток "владелец ресурса", исходный запрос на вход с областью действия "администратор" выглядит следующим образом:
POST /ids/connect/token HTTP/1.1
Host: https://mywebsite.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=password&username=billybob&password=mypassword&scope=admin&client_id=MyClientId&client_secret=MyClientSecret
Затем, когда вы хотите получить «опасную» область, выполните еще один вход в систему таким же образом, но добавьте «опасную» область в свой запрос (разделенный пробелом), токен доступа, который вы получите, теперь будет иметь обе области (административный и опасный). ):
POST /ids/connect/token HTTP/1.1
Host: https://mywebsite.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=password&username=billybob&password=mypassword&scope=admin dangerous&client_id=MyClientId&client_secret=MyClientSecret
person
bitcoder
schedule
05.08.2015