powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / custom Authentication and Authorization
13 сообщений из 13, страница 1 из 1
custom Authentication and Authorization
    #39540974
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочу понять как работает AuthenticationMiddleware, авторизирую так, тут стандартно
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
       
            var claims = new[]
            {
                new Claim(ClaimTypes.Name, customer.Username, ClaimValueTypes.String, "Issuer"),
                new Claim(ClaimTypes.Email, customer.Email, ClaimValueTypes.Email, "Issuer")
            };
            
            var userIdentity = new ClaimsIdentity(claims, "AuthenticationScheme");
            var userPrincipal = new ClaimsPrincipal(userIdentity);

            var authenticationProperties = new AuthenticationProperties
            {
                IsPersistent = isPersistent,
                IssuedUtc = DateTime.UtcNow
            };

            //sign in
            await HttpContext.SignInAsync("AuthenticationScheme", userPrincipal,   authenticationProperties);



спер пример из нопа с милдлвером
Код: c#
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.
public class AuthenticationMiddleware
    {
        private readonly RequestDelegate _next;

        public IAuthenticationSchemeProvider Schemes { get; set; }

        public AuthenticationMiddleware(RequestDelegate next, IAuthenticationSchemeProvider schemes)
        {
            _next = next ?? throw new ArgumentNullException(nameof(next));
            Schemes = schemes ?? throw new ArgumentNullException(nameof(schemes));
        }


        public async Task Invoke(HttpContext context)
        {
            context.Features.Set<IAuthenticationFeature>(new AuthenticationFeature
            {
                OriginalPath = context.Request.Path,
                OriginalPathBase = context.Request.PathBase
            });

            // Give any IAuthenticationRequestHandler schemes a chance to handle the request
            var handlers = context.RequestServices.GetRequiredService<IAuthenticationHandlerProvider>();
            foreach (var scheme in await Schemes.GetRequestHandlerSchemesAsync())
            {
                try
                {
                    if (await handlers.GetHandlerAsync(context, scheme.Name) is IAuthenticationRequestHandler handler && await handler.HandleRequestAsync())
                        return;
                }
                catch { continue; }
            }

            var defaultAuthenticate = await Schemes.GetDefaultAuthenticateSchemeAsync();
            if (defaultAuthenticate != null)
            {
                var result = await context.AuthenticateAsync(defaultAuthenticate.Name);
                if (result?.Principal != null)
                {
                    context.User = result.Principal;
                }
            }

            await _next(context);
        }
    }


но не авторизует, ваще не видит в мидлвере схемы авторизации, что я упустил?

конфигурирую вот так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var authenticationBuilder = services.AddAuthentication(options =>
            {
                options.DefaultSignInScheme = "AuthenticationScheme";
            });

            authenticationBuilder.AddCookie("AuthenticationScheme", options =>
            {
                options.Cookie.Name = "lalala";
                options.Cookie.HttpOnly = true;
                options.LoginPath = "LoginPath";
                options.AccessDeniedPath = "AccessDeniedPath";
            });

...........
             application.UseMiddleware<AuthenticationMiddleware>();
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541016
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

handmadeFromRuспер пример из нопа с милдлвером

Это же стандартная реализация встроенного миддла зачем свою делать?

Схему для аутентификации не указал: o.DefaultAuthenticateScheme

вижу только options.DefaultSignInScheme
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541021
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

у нас авторизация сквозь 3 разные таблицы не связаных юзеров..так уж сложилось когда то давно. не хотим пока бд менять, вот поэтому смотрю технологию и под свои нужны. так то я посмотел что мне достаточно 3 интрефейса реализовать чтоб базовый identety заюзать. щас попробую прописать схему, заодно в внутренностях копаюсь
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541023
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

Я бы на вашем месте найстойчиво смотрел в сторону SSO и OpenID Connect. И там уже плевать как у вас там юзеры по таблицам организованы, или разбросаны по всему миру, добываются из космоса или ещё как
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541026
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

"AuthenticationScheme" плохой выбор для схемы, кстати :)
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541028
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

можешь объяснить, если не сложно, не горит, пока я хотя бы так хочу демку запустить, а там посмотрим.
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541129
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСхему для аутентификации не указал: o.DefaultAuthenticateScheme

прописал и теперь при переходе на страницу, требующую пользователя, редиректит на login + мидлвере не вызывается. чет прям не заводиться в моих руках.
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541220
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuhVostt,

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

Зырь сюда: https://github.com/identityserver

Там есть дока и семплы.
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541221
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuhVosttСхему для аутентификации не указал: o.DefaultAuthenticateScheme

прописал и теперь при переходе на страницу, требующую пользователя, редиректит на login + мидлвере не вызывается. чет прям не заводиться в моих руках.

Ну всё верно, на логине и не должен мидлвере вызываться, там атрибут надо ещё повесить для анонимного пользователя.
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541308
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

само собой не на login, кука авторизации появляется...обернул экшен атрибутом авторизации и при переходе на него редирект на login постоянно..хотя кука есть и сам мидлвере не дергается..дилема
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541570
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

проще посмотреть на стандартную реализацию авторизации с использованием Identity и посмотреть, чего ты ещё упустил :)
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541582
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

я нашел причину
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
            app.UseMiddleware<AuthenticationMiddleware>();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

так работает, если порядок поменять нет. usemvc что то меняет в конвейере ?
...
Рейтинг: 0 / 0
custom Authentication and Authorization
    #39541606
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

Ну естественно, я хотел об этом упомянуть, но подумал, что это очевидно :)
Авторизация должна всегда идти до обработки запроса модулем MVC.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / custom Authentication and Authorization
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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