c# как сделать NTLM сквозную авторизацию на сервере

218
10 февраля 2019, 22:00

Как авторизироваться через LDAP, или через какую-то библиотеку... Читая инфу по NTLM пока что получилось сделать вот какую "заглушку" по авторизации.

public partial class T : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
           if (Request.Headers["WWW-Authenticate"]==null) {
                if (Request.Headers["Authorization"] == null) {
                Response.ClearContent();
                Response.Headers.Add("WWW-Authenticate","NTLM");
                Response.Status = "401 Unautorized";
                Response.End();
            return;
        }
                };
        byte[] q1 = Convert.FromBase64String(Request.Headers["Authorization"].Substring(5)); // skip NTML
        if (q1[8]==1) { /*Первый пакет авторизации*/
          Response.ClearContent();              
          Response.Headers.Add("WWW-Authenticate","NTLM TlRMTVNTUAACAAAAAAAAACgAAAABggAAU3J2Tm9uY2UAAAAAAAAAAA==");
          Response.Status = "401 Unautorized";
          Response.End();/*Передали пакет номер 2*/
          return;                   
     }
        Response.Write("<html>");/*тут получили пакет номер 3, не проверяю номер*/            Response.Write(Request.Headers["Authorization"].Substring(5));            
        Response.Write("<br>");
        foreach (byte qq1 in q1) { 
           Response.Write(string.Format(" {0:x}",qq1));
           }
        Response.Write("<br>");
        foreach (byte qq2 in q1) if (qq2 > 32)  Response.Write((char)qq2);
    }

Даже получив хеш пароля (он почему-то каждый раз - разный) не понятно как проверить его подлинность. В LDAP пускает по логину и паролю, можно ли в LDAP достучатся или по хешу (пробросить), или какую-то либу использовать, или зайти в LDAP под своим логином, и вычитать с него хеши... Да. Сервер не в домене (был бы в домене, его бы авторизировал IIS). Админы говорят - нельзя добавить. Но LDAP доступен.

Пока, как результат, есть куча ссылок... возможно из них можно что-то узнать... Я ознакомился с всеми

  • https://stackoverflow.com/questions/33525493/acceptsecuritycontext-fails-when-application-is-running-as-a-service https://winterdom.com/dev/security/sspi/

  • https://stackoverflow.com/questions/5293412/how-do-i-create-ntlm-type-1-and-type-3-messages-in-net

  • https://docs.microsoft.com/ru-ru/windows/desktop/SecAuthN/authentication-functions#credential-management

  • http://www.dotnetframework.org/default.aspx/WCF/WCF/3@5@30729@1/untmp/Orcas/SP/ndp/cdf/src/WCF/ServiceModel/System/ServiceModel/Security/WindowsSspiNegotiation@cs/2/WindowsSspiNegotiation@cs

  • http://github.com/antiduh/nsspi/tree/master/NSspi/Contexts

  • http://msdn.microsoft.com/en-us/library/ms973911.aspx#remsspi_topic3

  • https://stackoverflow.com/questions/17241365/client-server-authentication-using-sspi

READ ALSO
Авто генерация итемов кроме ListView

Авто генерация итемов кроме ListView

Товарищи, доброго времени суток! Чисто теоретический вопрос, есть понимание, как настроить автогенерацию итемов в ListView через ViewModel, путем...

181
Получение следующей выборки данных sql

Получение следующей выборки данных sql

Я делаю выборку из бд и получаю данныеВсе что надо заполняется

177
Как проверить является ли файл .exe Native или DotNet?

Как проверить является ли файл .exe Native или DotNet?

Подскажите можно ли средствами C# языка узнать является ли файлexe DotNet или Native ? Без дополнительных библиотек и прочего)

184
поиск по файлам PHP (ускорить)

поиск по файлам PHP (ускорить)

слишком медленный поиск данных в файлах, любая идея, как можно ускорить? в папке есть файлы, каждый файл имеет структуру:

205