OpenIdConnect WIP
Библиотеки безопасности ASPNET
- Упрощенные библиотеки ASPNet, подобные безопасности.
- Переписывается из библиотеки безопасности ASPNet.
- «Свет» библиотеки функционального стиля [90% ООП без ООП].
Библиотеки безопасности
- Аутентификация. Кукии.
- Аутентификация.facebook.
- Аутентификация. Google.
- Аутентификация.twitter.
- Аутентификация.bearertoken.
- Аутентификация.oauth2.
- Аутентификация. OpenidConnect.
- Авторизация.
- DataProtection.
Дизайн
- Услуги безопасности [Услуги аутентификации и авторизации] представляют собой основу механизма .
- Услуги безопасности [функции высокого уровня ] действуют как контроллеры поведения безопасности и представляют публичный API.
- Библиотеки безопасности были записаны в соответствии с некоторыми принципами FP [чистые функции, функции высокого порядка, неизменность, разделение данных/поведения, статические методы/функции как первоклассные граждане, шаблон результатов].
- DI используется в виде тонкого слоя, обычно в условиях функциональной безопасности [например. Signincookie имеет 2 реализации с/без служб DI]. Реализации DI Services регистрируются, как обычно, с конкретными расширениями метода [например. AddCookiesservices , addfacebookservices ].
- Механизм безопасности основан на службах безопасности [Схема аутентификации свободного механизма]:
- Аутентификация промежуточное программное обеспечение получает службу аутентификации как Param [расширение Useauthentication ].
- Авторизация промежуточного программного обеспечения получает проблему и запрещает услуги в качестве параметров [расширение Useauthorization ].
- Конечные точки обратного вызова OAuth Mapfacebook ].
- Библиотеки аутентификации Внедряют конкретные службы аутентификации [например. AuthenticateCookie , Signincookie , ChallengeGoogle , AuthenticateFacebook ].
- Авторизация библиотека реализации Услуги авторизации [например. Разрешить ].
- Функции высокого уровня обычно используют декларативный стиль [например. Signincookie ].
- обычно нечистые функции [с побочными эффектами].
- Построенный на вершине функций низкого уровня и среднего уровня .
- Функции промежуточного уровня используют императивный/декларативный стиль [например. SetAuthorizationParams ].
- Функции низкого уровня обычно используют императивный стиль и являются однострочными [например. Issecuedcookie ].
- Обычно чистые [без побочных эффектов] или полупрофессиональные функции [побочные эффекты на параметры].
- Дизайн иерархии высокого уровня низкого уровня, я назвал его принципом LEGO . Это можно увидеть также как пирамида функций, имеющих базовые функции низкого уровня .
- Нет стратегии [0 (ноль), иначе ветви].
Процессы
- Существует 2 различных процесса безопасности: локальная аутентификация и удаленная аутентификация .
- Локальный процесс аутентификации [cookie]:
- Каждый запрос [при использовании аутентификации Middlware] вызововать аутентификацию func [например. AuthenticateCookie ]. На основании результата аутентификации, набор промежуточного программного обеспечения httpcontext.user prop.
- Затем каждый запрос [при использовании Authorization Middlware] Вызовите авторизацию фанк [например. Разрешить ]. Основываясь на политике авторизации, результат определяется, если запрос разрешен, неавтотиционировал/оспаривается или неавторизован/запрещена.
- Функции Signin/Shinkout используются на определенных конечных точках/действиях контроллера, реализованными разработками.
- процесс удаленной аутентификации [протокол OAuth2]:
- Когда вы называете, конечная точка вызова [например. Зарегистрировано в Mapfacebook ] Создайте и отправьте запрос на авторизацию на сервер авторизации.
- После обработки запроса авторизации сервер авторизации перенаправить ответ на конечную точку обратного вызова [например. зарегистрировано в Mapfacebook ]. Эта конечная точка получает ответ сервера авторизации и фонд обратного вызова [например. Callbackfacebook , CallbackOauth ]. Функция обратного вызова имеет 2 шага:
- Аутентификация: аутентификация AOUTH Authentication Func имеет 3 рамки:
- Постаауторизация - проверить код авторизации и запрос с сервера авторизации [Local].
- ExchangeCodeFortOkens - обмен с сервером авторизации код авторизации для доступа [и обновления] токенов [удаленные].
- AccessUseRinfo - Использование токена доступа получает от сервера авторизации пользовательская информация [удаленная].
- Шаг аутентификации преобразование пользовательской информации, полученная от сервера авторизации в претензии по безопасности, добавьте их в идентификацию претензий, создайте билет аутентификации и возвращает аутентификацию .
- SIGNIN: После шага аутентификации OAuth, когда аутентификация преуспела, тогда Fundin Func называется [например. *Siginincookie^, signberertoken ]. Signin Func установлен на регистрации конечных точек OAuth.
- После перенаправления обратного обращения в следующие запросы будут использовать локальный процесс аутентификации .
Замечания
- Полностью переписанный механизм аутентификации.
- Частично переписанное механизм разрешения [ведение совместимости с механизмом политики авторизации ASPNet].
- Услуги аутентификации cookie хирургически реализуют функцию cookie на основе сеансов [с использованием Func EssessionBasedCookie Func]. Службы подлинности, подписания и подписания полностью независимы друг от друга [нет зависимости от функций HTTPContext]. AuthenticationSessionCookie , SigninsessionCookie и SignoutsEssessionCookie Session Services полностью изолированы от не сессионных версий.
- Реализация параметров аутентификации содержит только данные [например. CookieauthenticationOptions ]. Услуги аутентификации cookie [не на основе DI] получают все зависимости в качестве параметров.
- Microsoft ASPNETOUTICATICATICATION Реализация «Параметры аутентификации» содержит данные и поведение/услуги [например. SessionStore , TicketDataFormat , SystemClock для cookieAuthenticationOptions ]. В этом дизайне есть некоторые преимущества, сравнивая мою реализацию, позволяющую: варианты:
- иметь разные услуги, зарегистрированные на DI.
- инкапсулировать и выполнить эти услуги через процесс аутентификации [уменьшение количества параметров, так что].
- AuthenticateOauth Oauth Authentication Func -Func Используйте шаблон метода проектирования метода Дизации, позволяющий библиотекам OAuth переопределять/декорировать при необходимости подразделения по почте . AuthenticateTwitter , AuthenticateFacebook ].
- Перенаправление замечаний:
- ChallengeOAuth и FalkeoIdc Funcs перенаправляют на сервер авторизации [ ChallengeOidc может использовать форму вместо перенаправления].
- CallbackOauth и Callbackoidc Funcs перенаправляют на исходный URL или при ошибке аутентификации обратного вызова в параметрах аутентификации AccestDiedPath или Errorpath Authentication в зависимости от типа ошибки.
- Signincookie , SignoutCookie , Challenge *, запрет * и т. Д. Нет перенаправления [Overnected Webapi функциональность]. Когда перенаправления необходимы, эти функции могут быть украшены и перенаправлены на AuthenticationProperties.redirecturi или на аутентификацию .
- Примечания печенья:
- AuthenticationCookieOptions.expiresafter Одно место для управления аутентификацией .
- AuthenticationCookieOptions.cookiename одиночное место для управления именами файлов cookie.
- OIDC Замечания:
- PKCE является рекомендуемым решением, касающимся безопасности для поток кода авторизации .
- Неявные и гибридные потоки не поддерживаются на основе лучших практик OIDC [даже поддерживаются OIDC RFC].
- Nonce не является необходимым, потому что неявные и гибридные являются только потоками с необходимым параметром NOCE .
Цели проекта
- распутать/демистифицировать механизмы аутентификации/авторизации ASPNET и локальные/удаленные процессы.
- Чтобы упростить механизмы аутентификации/авторизации [бесплатный механизм на основе схемы ASPNet].
- продемонстрировать функциональное реализацию программирования.
- продемонстрировать практическую альтернативу ООП.
Эталон
| Метод | VocationCount | Иметь в виду | Ошибка | Stddev | Медиана | Соотношение | Соотношение | Gen0 | Gen1 | Gen2 | Выделено | Коэффициент выделения |
|---|
| Fpsignin | 128 | 64,34 мкс | 1,196 мкс | 1,119 мкс | 64,69 мкс | 1,00 | 0,00 | - | - | - | 7,96 КБ | 1,00 |
| Опсиньин | 128 | 79,98 мкс | 3,247 мкс | 9,212 мкс | 79,56 мкс | 1.13 | 0,14 | 7.8125 | 7.8125 | 7.8125 | 116.21 КБ | 14.59 |
| | | | | | | | | | | | |
| Fpsignin | 512 | 45,75 мкс | 5,065 мкс | 14,934 мкс | 39,12 мкс | 1,00 | 0,00 | 1.9531 | - | - | 7,96 КБ | 1,00 |
| Опсиньин | 512 | 97,08 мкс | 7,432 мкс | 21,679 мкс | 95,52 мкс | 2.41 | 1.12 | 9.7656 | 9.7656 | 9.7656 | 445,7 кб | 56.01 |
| | | | | | | | | | | | |
| Fpsignin | 1024 | 28,83 мкс | 2,009 мкс | 5,533 мкс | 26,26 мкс | 1,00 | 0,00 | 1.9531 | - | - | 7,95 КБ | 1,00 |
| Опсиньин | 1024 | 186,15 мкс | 26,776 мкс | 78,949 мкс | 211,04 мкс | 6.32 | 3.02 | 14.6484 | 13.6719 | 13.6719 | 915,64 КБ | 115.12 |
- Для AlpocationCount> 2048 OOP Clarkmark Начните работать очень медленно.