Поправьте меня, если я чего-то не понимаю. Я работаю со свежим приложением веб-API, созданным из шаблона VS.
- Пользователь регистрируется прямо на странице входа в приложение веб-API.
- Похоже, что пользователь может зарегистрироваться извне приложения веб-API (с ЛЮБОГО устройства, которое знает URL-адрес api / Accounts), но для этого требуется передача конфиденциальной информации в виде обычного текста.
- Образец
ValuesController
имеет[Authorize]
. - Доступ к / api / Values из браузера приведет к выдаче 401, если пользователь не вошел в систему.
- Доступ к / api / Values из Fiddler также вызовет ошибку 401, даже если пользователь вошел в систему. Это связано с тем, что для этого требуется заголовок Authorize: Bearer, токен доступа которого недоступен извне веб-приложения.
- Существует конечная точка токена, которую мы можем использовать для запроса токена извне приложения, но для использования встроенной конечной точки токена требуется, чтобы имя пользователя и пароль были отправлены в виде обычного текста.
Я предполагаю, что вся работа должна выполняться из внешнего доверенного клиентского приложения (которое должно иметь доступ к той же базе данных, в которой хранится информация о пользователях). Как из клиентского приложения создать токен доступа, чтобы я мог сделать запрос, который будет иметь этот токен доступа в заголовке?
Предположим, что мне удалось добиться создания приемлемого токена доступа от клиента. Будет ли атрибут [Authorize]
по-прежнему блокировать доступ, потому что пользователь технически не вошел в систему? Или [Authorize]
действительно регистрирует пользователя, если это не приводит к ошибке 401?