ASP.NET - Используя Стандартную аутентификацию, не имея пользователей Windows

Повышение используется так экстенсивно потому что:

  • Это - открытый исходный код и рецензируемый.
  • Это обеспечивает широкий спектр из функциональности агностика платформы тот пропущенный STL.
  • Это - дополнение к STL, а не замене.
  • Многие разработчики Повышения находятся в комитете по стандарту C++. На самом деле, много частей Повышения считается включенным в следующую библиотеку стандарта C++.
  • Это документируется приятно.
  • лицензия позволяет включение в проекты с закрытым исходным кодом и с открытым исходным кодом.
  • Его функции не обычно зависящие друг от друга так, можно связать только части, которых Вы требуете. [ Luc Hermitte комментарий]

12
задан Robin Day 11 December 2009 в 11:00
поделиться

4 ответа

Хорошо, я нашел два решения этой проблемы. Одно спасибо 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();
        }
    }
}
11
ответ дан 2 December 2019 в 18:54
поделиться

Является ли страница файлом .html или файлом .aspx? Если это .aspx, вы должны оставить эту страницу с анонимным доступом и проверить аутентификацию в самой логике страницы

1
ответ дан 2 December 2019 в 18:54
поделиться

Я не эксперт, но я думал, что Пункт Basic заключался в том, что это была проверка подлинности Windows. Можете ли вы запустить сценарий для синхронизации пользователей БД с Active Directory?

Если это корпоративная AD, вы можете подумать о наличии второй AD только для вашего приложения и синхронизации пользователей как из корпоративной AD, так и из вашей БД. Если вам не нужно синхронизировать пароли (например, создать страницу pwd-mgmt на своем сайте), вы можете просто использовать скрипты или C # или что-то в этом роде. Если вам нужно что-то более сложное со встроенной синхронизацией паролей, вы можете взглянуть на ILM 2007 (скоро будет FIM 2010).

1
ответ дан 2 December 2019 в 18:54
поделиться

Поскольку у вас есть настраиваемая база данных пользователей, я бы порекомендовал создать быстрый поставщик членства , который взаимодействует со схемой вашей базы данных.

В MSDN есть хороший пример «Как сделать: образец поставщика членства» .

Затем вы можете использовать стандартные механизмы управления доступом ASP.NET , чтобы заблокировать страницы, требовать аутентификации и т. д., а также такие элементы управления, как Login , LoginStatus и другие, чтобы обеспечить большую часть необходимого пользовательского интерфейса.


Отредактируйте, чтобы добавить

Быстрый ] search обнаружил следующее, которое может помочь:

Безопасность веб-службы - базовая HTTP-аутентификация без Active Directory

Где представляет Грег Райнакер "

5
ответ дан 2 December 2019 в 18:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: