Внедрение единого входа ASP.NET ASP.NET
Мне поручено внедрить единый вход для наших клиентов в рамках нашего следующего выпуска. Поток существует следующим образом:
- Пользователь входит в систему основного школьного портала, используя идентификатор/пароль учащегося, предоставленные ему/ей школой.
- Пользователь нажимает ссылку на продукт моей компании.
- Пользователь автоматически попадает на страницу панели инструментов, как если бы он только что вошел в систему через форму входа на нашем сайте.
Таким образом, существует два механизма, с помощью которых пользователь может пройти аутентификацию на нашем сайте:
- Перейдите на главную страницу нашего продукта и войдите в систему, используя адрес электронной почты/пароль, который мы храним в нашей локальной системе.
- Использование единого входа, когда учащийся уже вошел в основную систему школы с помощью идентификатора и пароля учащегося.
Если наша реализация продукта в ASP.NET (в отличие от Java/Ruby), должны ли мы использовать CAS, JOSSO или какой-либо другой сторонний продукт с единым входом? Или есть что-то доступное для среды .NET, что было бы проще для нас, компании .NET?
Ответы
Ответ 1
Существует несколько вариантов реализации SSO для .NET-приложения.
Ознакомьтесь со следующими учебниками онлайн:
Основы единого входа, июль 2012
http://www.codeproject.com/Articles/429166/Basics-of-Single-Sign-on-SSO
GaryMcAllisterOnline: ASP.NET MVC 4, ADFS 2.0 и сторонняя интеграция с STS (IdentityServer2), январь 2013
http://garymcallisteronline.blogspot.com/2013/01/aspnet-mvc-4-adfs-20-and-3rd-party-sts.html
Первый использует ASP.NET Web Forms, а второй использует ASP.NET MVC4.
Если ваши требования позволяют использовать стороннее решение, также рассмотрите OpenID. Там есть библиотека с открытым исходным кодом, называемая DotNetOpenAuth.
Для получения дополнительной информации прочитайте сообщение в блоге MSDN Интегрируйте OpenAuth/OpenID с существующим приложением ASP.NET с помощью универсальных поставщиков.
Надеюсь, это поможет!
Ответ 2
Я опаздываю на вечеринку, но для варианта № 1 я бы пошел с
IdentityServer3 (.NET 4.6 или ниже) или IdentityServer4 (совместим с Core).
Вы можете повторно использовать существующее хранилище пользователей в своем приложении и подключить его к хранилищу пользователей IdentityServer. Затем клиенты должны указывать ваш IdentityServer как открытый поставщик идентификаторов.
Ответ 3
Существует несколько поставщиков удостоверений с поддержкой единого входа, а также сторонние ** продукты.
** Единственная проблема со сторонними продуктами заключается в том, что они взимают плату за пользователя/месяц, и это может быть довольно дорого.
Вот некоторые из доступных инструментов с API для .NET:
Если вы решите использовать собственную реализацию, вы можете использовать нижеприведенные фреймворки, классифицированные по языку программирования.
С#
- IdentityServer3 (протоколы OAuth/OpenID, OWIN/Katana)
- IdentityServer4 (протоколы OAuth/OpenID, ASP.NET Core)
- OAuth 2.0 от Okta
Javascript
- passport-openidconnect (node.js)
- oidc-provider (node.js)
- openid-client (node.js)
Python
- pyoidc
- Поставщик Django OIDC
Я бы пошел с приложением IdentityServer4 и ASP.NET Core, оно легко настраивается, и вы также можете добавить свой собственный поставщик аутентификации. Он использует протоколы OAuth/OpenID, более новые, чем SAML 2.0 и WS-Federation.
Ответ 4
UltimateSAML SSO - это инструментарий .NET, соответствующий спецификациям OASIS SAML v1.x и v2.0. Он предлагает элегантный и простой способ добавить поддержку SAML единого входа и единого выхода в ваши приложения ASP.NET, ASP.NET MVC, ASP.NET Core, Desktop и Service. Облегченная библиотека помогает обеспечить единый доступ к облачным веб-сайтам и веб-сайтам интрасети с помощью одной записи учетных данных.
Подробный обзор UltimateSAML SSO можно найти здесь