Как Вы получаете зарегистрированную учетную запись домена Windows из приложения ASP.NET?

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

8
задан mattruma 15 September 2008 в 18:25
поделиться

8 ответов

Я сделал в значительной степени точно, что Вы хотите сделать несколько лет назад. Я пытаюсь найти некоторый код для него, хотя это было в предыдущем задании так, чтобы код был дома.

Я действительно помню, хотя я использовал эту статью в качестве своей начальной точки. Вы настраиваете поставщика LDAP, таким образом, можно на самом деле осуществить проверку пользователя по сравнению с LDAP. Одна вещь удостовериться в том, если Вы пробуете подход LDAP. В файле установки, где Вы настраиваете LDAP, удостоверяются, что LDAP является всеми заглавными буквами, если это не будет это, то не решит.

1
ответ дан 5 December 2019 в 23:17
поделиться

Интеграция этого вида на уровне сервера, это - IIS, который решает, что пользователь не зарегистрирован; и это - IIS, который передает подсказку аутентификации обратно пользователю, на которого реагирует браузер.

Поскольку Вы хотите использовать доменный вход в систему существует только один способ сделать это; интегрированная аутентификация Windows. Это будет только работать, если сервер IIS будет также частью домена, и пользователи получают доступ к машине непосредственно, не через прокси, и от машин, которые являются также частью домена (с пользователями, соответственно вошел в систему).

Однако Ваш пользовательский объект принципала может создать забаву и игры; аутентификацией этого типа будет WindowsPrincipal и WindowsIdentity; к которому можно получить доступ через Пользовательский объект (см. Как К: Используйте аутентификацию Windows в ASP.NET 2.0),

Я предполагаю, что Вы хотите пользовательский принципал из-за своих пользовательских ролей? Я сомневаюсь, что можно заставить два играть приятно; Вы могли создать пользовательского ролевого поставщика, который смотрит на Ваше хранилище данных, или взгляд на Вас мог посмотреть на ADAM, расширение AD, который обеспечивает роли на на основание программы и идет с хорошими инструментами управления.

2
ответ дан 5 December 2019 в 23:17
поделиться
using System.Security.Principal;
...
WindowsPrincipal wp = (WindowsPrincipal)HttpContext.Current.User;

получить текущего пользователя домена. Конечно, необходимо удостовериться, что IIS настраивается для обработки аутентификации Windows.

1
ответ дан 5 December 2019 в 23:17
поделиться

Это могло бы быть полезно:

WindowsIdentity myIdentity = WindowsIdentity.GetCurrent();

WindowsPrincipal myPrincipal = new WindowsPrincipal(myIdentity);

string name = myPrincipal.Identity.Name;
string authType = myPrincipal.Identity.AuthenticationType;
string isAuth = myPrincipal.Identity.IsAuthenticated.ToString();

string identName = myIdentity.Name;
string identType = myIdentity.AuthenticationType;
string identIsAuth = myIdentity.IsAuthenticated.ToString();
string iSAnon = myIdentity.IsAnonymous.ToString();
string isG = myIdentity.IsGuest.ToString();
string isSys = myIdentity.IsSystem.ToString();
string token = myIdentity.Token.ToString();

Отказ от ответственности: Я получил это из technet статьи, но я не могу найти ссылку.

1
ответ дан 5 December 2019 в 23:17
поделиться

Можно использовать System.Threading.Thread.CurrentPrincipal.

0
ответ дан 5 December 2019 в 23:17
поделиться

Запрос. ServerVariables["REMOTE_USER"]

Это не проверяется для Вашей установки, но я вспоминаю использование этого некоторое время назад.

0
ответ дан 5 December 2019 в 23:17
поделиться

Вы думали о выдаче себя за другое лицо? Вы можете сохранить учетные данные пользователя для входа в систему NT в своем настраиваемом объекте безопасности, а затем просто выдавать себя за пользователя с помощью кода, когда это необходимо.

http://msdn.microsoft.com/en-us/library/aa292118 (VS.71) .aspx

0
ответ дан 5 December 2019 в 23:17
поделиться

Попробуйте Request.ServerVariables ("LOGON_USER").

Если параметры безопасности каталога настроены так, что этот каталог не допускает анонимных пользователей, когда пользователь перейдет на эту страницу, ему будет предложено в стандартном модальном диалоговом окне с запросом имени пользователя и пароля. Request.ServerVariables ("LOGON_USER") вернет этого пользователя.

Однако это, вероятно, не сработает для вас, потому что вы используете свои собственные объекты безопасности. Если вы сможете выяснить, как обойти это окно входа в систему или передать учетные данные NT на сайт до того, как он их запросит, тогда все будет готово.

0
ответ дан 5 December 2019 в 23:17
поделиться
Другие вопросы по тегам:

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