powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблемы с Windows Authentication
12 сообщений из 12, страница 1 из 1
Проблемы с Windows Authentication
    #39044714
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День дорый,

Господа помогите плизз понять как решить следующую проблему...
Сайт с виндоус аутентификацией. Создал расширение для Identity.

Проблема в том что после публикации сайта на серваке имя перового пользователя определяется нормально.
А вот следующие пользователи получают имя первого ((

Почему так ... ни как понять не могу.



Global.asax

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Private Sub MvcApplication_PostAuthenticateRequest(sender As Object, e As EventArgs) Handles Me.PostAuthenticateRequest

        Dim IdentityId As String = Context.User.Identity.IdentityId
        Dim IdentityName As String = Context.User.Identity.IdentityName
        Dim FirstName As String = Context.User.Identity.FirstName
        Dim LastName As String = Context.User.Identity.LastName
        Dim Email As String = Context.User.Identity.Email

        Dim CurrentPrincipal As New CustomWindowsPrincipal(DirectCast(User.Identity, WindowsIdentity), employee)

        HttpContext.Current.User = CurrentPrincipal

    End Sub




IdentityExtension

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
Imports System.Runtime.CompilerServices
Imports System.Security.Claims
Imports System.Security.Principal

<Extension>
Public Module IdentityExtension

    Private _UserPrincipal As UserPrincipal
    Private _ClaimsIdentity As ClaimsIdentity
    Private _PrincipalContext As PrincipalContext

    Private _fullname As String
    Private _identityid As String
    Private _identityname As String
    Private _firstname As String
    Private _lastname As String
    Private _email As String

    <Extension>
    Public Function FullName(obj As IIdentity) As String

        If _fullname <> Nothing Then
            Return _fullname
        End If

        If _ClaimsIdentity Is Nothing Then
            _ClaimsIdentity = TryCast(obj, ClaimsIdentity)
        End If

        If _ClaimsIdentity Is Nothing Then
            Return Nothing
        End If

        If _PrincipalContext Is Nothing Then
            _PrincipalContext = New PrincipalContext(ContextType.Domain, "MYDOMAIN", Nothing, ContextOptions.Negotiate)
        End If

        If _PrincipalContext Is Nothing Then
            Return Nothing
        End If

        If _UserPrincipal Is Nothing Then
            _UserPrincipal = UserPrincipal.FindByIdentity(_PrincipalContext, IdentityType.SamAccountName, _ClaimsIdentity.Name)
        End If

        If _UserPrincipal Is Nothing Then
            Return Nothing
        End If

        _fullname = String.Format("{0} {1}", _UserPrincipal.GivenName, _UserPrincipal.Surname)

        Return _fullname

    End Function

etc...




CustomWindowsPrincipal

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Imports System.Security.Principal

Public Class CustomWindowsPrincipal
    Inherits WindowsPrincipal

    Public ReadOnly Property Employee As Employee

    Public Sub New(CurrentWindowsIdentity As WindowsIdentity, EmployeeParam As Employee)
        MyBase.New(CurrentWindowsIdentity)
        Employee = EmployeeParam
    End Sub

    Public Overrides Function IsInRole(role As String) As Boolean

        If Employee Is Nothing Then
            Return False
        End If

        If Employee.Roles.Count = 0 Then
            Return False
        End If

        If Employee.Roles.Where(Function(p) p.Name = role).Count = 0 Then
            Return False
        End If

        Return True

    End Function

End Class
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044729
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GПроблема в том что после публикации сайта на серваке имя перового пользователя определяется нормально.
А вот следующие пользователи получают имя первого ((
Не понятно ничего. Как при Windows аутентификации может быть первый и второй пользователь?
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044732
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
Public Module IdentityExtension



а почему вы храните данные аутентифицированного пользователя в глобальном модуле? вот туда первый и прописывается, а дальше у вас по коду из локальных переменных считывается он же.
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044792
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AxeleronАртем GПроблема в том что после публикации сайта на серваке имя перового пользователя определяется нормально.
А вот следующие пользователи получают имя первого ((
Не понятно ничего. Как при Windows аутентификации может быть первый и второй пользователь?


Сайт на сервере...

Я захожу на сайт со своего рабочего компа и вижу что я авторизовался как Артем.
Вася со своего рабочего компа заходит и тоже авторизовывается как Артем.

Почему так происходит я не понимаю ( ... как этому сделать дебаг не знаю (
Я новичек в вебе ... конкретно сейчас пишу на mvc. Отсюда такие сложности.
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044796
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G,
Konst_One Вам выше уже сказал почему скорее всего так происходит. Кто первый заходит на сайт, тот и будет считаться прилогиненым вне зависимости от действительного логина из-за имплементации IdentityExtension.
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044810
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One
Код: c#
1.
Public Module IdentityExtension



а почему вы храните данные аутентифицированного пользователя в глобальном модуле? вот туда первый и прописывается, а дальше у вас по коду из локальных переменных считывается он же.

Спасибо за попытку помочь но не очень понятно ...


Сайт на серваке ...

ВОт вошел первый пользователь со своей рабочей станции
Запустилась вот эта часть кода Private Sub MvcApplication_PostAuthenticateRequest
И у него свой набор Identity

ВОт вошел второй пользователь со своей рабочей станции
Запустилась вот эта часть кода Private Sub MvcApplication_PostAuthenticateRequest
И у него свой набор Identity

Это не так?


PS
Public Module IdentityExtension - он отдельно от Global.asax. Расширяет Identity дополнительными свойствами как например FullName
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044812
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделайте отладку в файл и посмотрите куда и где у вас пропадает пользователь
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044813
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странность заключается в том что если мы все закроем браузеры и 1ый и 2ой пользователь и 2ой пользователь зайдет снова то он все равно авторизуется как 1ый.
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044817
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneсделайте отладку в файл и посмотрите куда и где у вас пропадает пользователь

Подскажите плизз NLog должен здесь помочь? или что то другое? ...
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044824
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Артем GСтранность заключается в том что если мы все закроем браузеры и 1ый и 2ой пользователь и 2ой пользователь зайдет снова то он все равно авторизуется как 1ый.

Спустя какое то время ... 2ой все же авторизовался под собой. Но теперь первый Авторизуется под 2ым.
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044825
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GKonst_Oneсделайте отладку в файл и посмотрите куда и где у вас пропадает пользователь

Подскажите плизз NLog должен здесь помочь? или что то другое? ...

NLog подойдёт

PS
проверьте ещё правильность настроек домена и IIS
http://www.codeproject.com/Articles/770347/On-Premise-Application-Identity-Windows-Authentica
...
Рейтинг: 0 / 0
Проблемы с Windows Authentication
    #39044870
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильно указали. Проблема оказалась действительно в переменных.

Теперь другая проблема - это медленно грузиться... потому как каждый раз приходиться создавать

Может подскажете как лучше выйти из данной ситуации?

Код: vbnet
1.
Dim _UserPrincipal As UserPrincipal = UserPrincipal.FindByIdentity(_PrincipalContext, IdentityType.SamAccountName, _ClaimsIdentity.Name)




Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Imports System.Runtime.CompilerServices
Imports System.Security.Claims
Imports System.Security.Principal

<Extension>
Public Module IdentityExtension

    <Extension>
    Public Function FullName(obj As IIdentity) As String

        Dim _ClaimsIdentity As ClaimsIdentity = TryCast(obj, ClaimsIdentity)

        If _ClaimsIdentity Is Nothing Then
            Return Nothing
        End If

        Dim _PrincipalContext As PrincipalContext = New PrincipalContext(ContextType.Domain, "MYDOMAIN", Nothing, ContextOptions.Negotiate)

        If _PrincipalContext Is Nothing Then
            Return Nothing
        End If

        Dim _UserPrincipal As UserPrincipal = UserPrincipal.FindByIdentity(_PrincipalContext, IdentityType.SamAccountName, _ClaimsIdentity.Name)

        If _UserPrincipal Is Nothing Then
            Return Nothing
        End If

        Return String.Format("{0} {1}", _UserPrincipal.GivenName, _UserPrincipal.Surname)

    End Function
End Module
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблемы с Windows Authentication
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]