Ответ 1
Ссылка, которую вы дали, содержит большую часть необходимой вам информации, я надеюсь, что это заполняет пробелы.
Примечание.. При использовании Web.API 2 Microsoft предлагает другой подход с использованием фильтров проверки подлинности.
Настройте https на вашем сервере
Это очень важно, если вам нужна реальная безопасность, иначе пароли могут быть почерпнуты участниками отслеживания. Как вы это делаете, это зависит полностью от вашей настройки, которую вы не детализировали, но если вы работаете над Azure WebRole, там довольно хороший шаг за шагом руководство по настройке SSL из Microsoft.
Это не обязательно для следующих шагов, но это необходимо сделать, прежде чем вы отпустите свой код. Я упоминаю об этом сначала, потому что эта часть обычно связана с привлечением других людей (sysadmin для конфигурации сервера, финансов для приобретения сертификата и т.д.), И это хорошо, чтобы дать им много предупреждений.
Записать (или украсть) пользовательский IHttpModule для выполнения вашей аутентификации
Это большой блок кода С# в вашей ссылке - он анализирует значения, отправленные браузером, и устанавливает HttpContext.Current.User на аутентифицированный пользователь. Просто скопируйте и вставьте мясо в класс в свое приложение и хорошо вернетесь к нему позже. В вашем коде вам понадобятся следующие операторы.
using System; using System.Net.Http.Headers; using System.Security.Principal;
using System.Text; using System.Threading; using System.Web;
Свяжите этот модуль с вашим приложением
Добавить новый модуль в ваш файл web.config(возможно, уже существует файл note.webServer)
<system.webServer>
<modules>
<add name="BasicAuth" type="Full.ClassName.Path.BasicAuth, Assembly.Name"/>
</modules>
</system.webServer>
Ограничить доступ к соответствующим частям вашего сайта
Вы можете заблокировать определенные действия, добавив атрибут [Авторизовать] до определения действия. Блокируйте весь контроллер, добавив его перед классом контроллера.
[Authorize] // Restricts access to whole controller
public class StockController : ApiController {
[Authorize] // Restricts access to this action - not necessary if whole controller restricted.
public IEnumerable<StockLevel> Get() {
Или в вашем файле App_Start\WebApiConfig.cs вы можете добавить config.Filters.Add(new AuthorizeAttribute());
, и он заблокирует все.
Что-то, на что нужно обратить внимание - theres также System.Web.Mvc.AuthorizeAttribute
, поэтому, если у вас есть это пространство имен, вы можете получить запутанные результаты.
На этом этапе вы можете попробовать - пользователь: "пользователь", передать: "пароль".
Настройте проверку пользователя
Вернитесь к классу, который мы украли из ссылки, и вы увидите следующий блок кода:
// TODO: Here is where you would validate the username and password.
private static bool CheckPassword(string username, string password)
Отмените это, чтобы вернуть true, если имя пользователя и пароль действительны. Если вы катаетесь самостоятельно, вы можете изучить bcrypt (доверяете ли вы реализации, которую вы загрузили из сети?), PBKDF2 или класс Crypto (простой, но не очень безопасный), но там вероятно, что-то лучше от Microsoft, так как существует множество проблем с сохранением паролей.