Повышение используется так экстенсивно потому что:
Хорошо, я нашел два решения этой проблемы. Одно спасибо Zhaph - Ben Duguid за ответ, который представляет собой HttpModule, который позволяет ASP.Net полностью управлять аутентификацией.
Второе решение, и то, что я собираюсь использовать, - благодаря этому вопросу / ответу.
HTTP-аутентификация (базовая или дайджест-проверка) в ASP Classic через IIS
Я избавился от этого и получил простой тестовый набор, который, кажется, работает хорошо. В этом примере вместо вызова базы данных он просто проверяет совпадение имени пользователя и пароля и считает, что это аутентифицировано.
using System;
using System.Text;
namespace AuthenticationTests
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string authorisationHeader = Request.ServerVariables["HTTP_AUTHORIZATION"];
if (authorisationHeader != null && authorisationHeader.StartsWith("Basic ", StringComparison.InvariantCultureIgnoreCase))
{
string authorizationParameters = Encoding.Default.GetString(Convert.FromBase64String(authorisationHeader.Substring("Basic ".Length)));
string userName = authorizationParameters.Split(':')[0];
string password = authorizationParameters.Split(':')[1];
if (userName == password) //Perform your actual "login" check here.
{
//Authorised!
//Page loads as normal.
}
else
{
Unauthorised();
}
}
else
{
Unauthorised();
}
}
private void Unauthorised()
{
Response.AddHeader("WWW-Authenticate", "Basic");
Response.Status = "401 Unauthorized";
Response.End();
}
}
}
Является ли страница файлом .html или файлом .aspx? Если это .aspx, вы должны оставить эту страницу с анонимным доступом и проверить аутентификацию в самой логике страницы
Я не эксперт, но я думал, что Пункт Basic заключался в том, что это была проверка подлинности Windows. Можете ли вы запустить сценарий для синхронизации пользователей БД с Active Directory?
Если это корпоративная AD, вы можете подумать о наличии второй AD только для вашего приложения и синхронизации пользователей как из корпоративной AD, так и из вашей БД. Если вам не нужно синхронизировать пароли (например, создать страницу pwd-mgmt на своем сайте), вы можете просто использовать скрипты или C # или что-то в этом роде. Если вам нужно что-то более сложное со встроенной синхронизацией паролей, вы можете взглянуть на ILM 2007 (скоро будет FIM 2010).
Поскольку у вас есть настраиваемая база данных пользователей, я бы порекомендовал создать быстрый поставщик членства , который взаимодействует со схемой вашей базы данных.
В MSDN есть хороший пример «Как сделать: образец поставщика членства» .
Затем вы можете использовать стандартные механизмы управления доступом ASP.NET , чтобы заблокировать страницы, требовать аутентификации и т. д., а также такие элементы управления, как Login , LoginStatus и другие, чтобы обеспечить большую часть необходимого пользовательского интерфейса.
Отредактируйте, чтобы добавить
Быстрый ] search обнаружил следующее, которое может помочь:
Безопасность веб-службы - базовая HTTP-аутентификация без Active Directory
Где представляет Грег Райнакер "