IdentityServer4 против AspNet.Security.OpenIdConnect.Server против OpenIddict

В попытке понять, что я могу использовать для реализации OpenId Connect Server, я изучил каждый из них:

  • # P2 #
    # P3 #
  • # P4 #
    # P5 #
  • # P6 #
    # P7 # # P8 #
  • Также проверили, что все они хорошо используют ASP.NET Core Identity в качестве системы членства.

Итак, мое текущее понимание таково, что IdentityServer4 и OpenIdConnect.Server - это две альтернативные структуры, которые решают одну и ту же проблему. Основное отличие - это список поддерживаемых версий ASP.NET Core.

Что касается Openiddict - это своего рода расширение для упрощения создания сервера на основе AspNet.Security.OpenIdConnect.Server.

Я что-то упустил, или в целом дела обстоят так?


person Set    schedule 06.10.2017    source источник


Ответы (1)


РЕДАКТИРОВАТЬ (28.01.2021): в рамках обновления 3.0 AspNet.Security.OpenIdConnect.Server и OpenIddict были объединены в единую / унифицированную базу кода под эгидой OpenIddict, которая должна предложить лучшее из обоих миров: у вас все равно опыт, как и раньше, но теперь можно выбрать деградированный режим, предоставляет опытным пользователям такой же низкоуровневый подход, что и AspNet.Security.OpenIdConnect.Server.


Итак, мое текущее понимание таково, что IdentityServer4 и OpenIdConnect.Server - это две альтернативные структуры, которые решают одну и ту же проблему. Основное отличие - это список поддерживаемых версий ASP.NET Core.

На самом деле, я считаю, что наиболее важным отличием является то, что эти две библиотеки не преследуют одну и ту же цель. Единственная миссия ASOS - помочь вам разобраться с необработанными деталями протокола OAuth 2.0 / OIDC: все остальное полностью выходит за рамки. Конкретно это означает, что такие концепции, как пользователи, приложения или магазины, которые вы можете найти в OpenIddict и IdentityServer, полностью отсутствуют в ASOS (что означает, что вы можете свободно вносить свою собственную реализацию ... и свою собственную абстракцию).

В то время как IdentityServer будет предоставлять множество абстракций и служб, позволяющих настраивать определенные функции, ASOS, созданный на основе OAuthAuthorizationServerMiddleware Katana, имеет централизованный низкоуровневый API на основе событий (с именем OpenIdConnectServerProvider), который ведет себя точно так же, как и безопасность ASP.NET Core. промежуточное ПО, разработанное MSFT.

При работе с ASOS вы должны иметь дело с необработанными запросами OpenID Connect и реализовывать потенциально конфиденциальные вещи, такие как аутентификация клиента (например, с использованием базы данных, содержащей учетные данные клиента), и поэтому основная цель ASOS - это люди, которые понимают, как работает протокол OAuth2 / OIDC. . OpenIddict и IdentityServer, с другой стороны, реализуют эти вещи за вас.

Что касается Openiddict - это своего рода расширение для упрощения создания сервера на базе AspNet.Security.OpenIdConnect.Server.

Изначально меня действительно попросили сделать это именно так. OpenIddict был создан для неспециалистов, которым неудобно разбираться в деталях протокола OAuth 2.0 и OpenID Connect.

Хотя это даст вам полную гибкость для реализации части аутентификации пользователя (например, в вашем собственном контроллере авторизации с использованием ASP.NET Core Identity или вашего собственного метода аутентификации), он будет обрабатывать сложный процесс проверки запроса и сделать его прозрачным для вашего приложения, не утопая вас множеством вариантов конфигурации.

В отличие от ASOS (который старается быть максимально гибким и максимально приближенным к спецификациям), OpenIddict обычно поставляется с более строгими процедурами проверки, которые я лично считаю лучшими. Например, он автоматически отклоняет запросы авторизации, содержащие response_type=token, если клиент является конфиденциальным приложением, даже если это не запрещено спецификацией OpenID Connect.

person Kévin Chalet    schedule 10.10.2017
comment
Подскажите, пожалуйста, почему я должен выбрать Openiddict вместо IdentityServer4? - person graycrow; 26.10.2017
comment
@graycrow, к сожалению, я не могу этого сделать, поскольку ответы на основе мнения в StackOverflow запрещены. Почему бы не попробовать и IdSrv, и OpenIddict, и выбрать тот, который вам больше нравится, исходя из собственных ощущений? - person Kévin Chalet; 26.10.2017
comment
@aaronR Было ли в моем ответе что-то такое, что заставило вас подумать, что это не так? - person Kévin Chalet; 26.10.2017
comment
@Pinpoint это было заявление, сделанное Set, которое не было адресовано. - person aaronR; 26.10.2017
comment
@aaronR хороший момент. Тем не менее, я не думаю, что это заявление было сделано Сетом, который, вероятно, просто процитировал документацию, в которой четко сказано, что IdentityServer4 is an OpenID Connect and OAuth 2.0 framework for ASP.NET Core 2 (docs.identityserver.io/en/release). Если это не так, лучше исправить неверную документацию. - person Kévin Chalet; 26.10.2017
comment
@Pinpoint в левом нижнем углу - это возможность прочитать документацию по предыдущей версии IdentityServer4. Текущий выпуск библиотек IdetityServer4 2.x нацелен на .NET Core 2.0, тогда как предыдущий выпуск IdentityServer4 1.x поддерживает .NET Core 1.x - person aaronR; 27.10.2017
comment
Мне кажется, что OpenIddict предназначен только для OpenID Connect, а IdentityServer4 предназначен как для OpenID Connect, так и для OAuth2. - person ; 05.05.2020
comment
@reiniellematt, ха-ха, нет, не обманывайтесь названием: OpenIddict отлично работает и с клиентами, поддерживающими только OAuth 2.0. - person Kévin Chalet; 05.05.2020
comment
В начале 2022 года IdentityServer4 больше не будет поддерживаться, и замена больше не будет бесплатной для использования в коммерческих целях. Это может повлиять на решение некоторых людей. devblogs.microsoft.com/aspnet/ - person jon antoine; 25.06.2021