Вопрос по active-directory, adfs, c#, single-sign-on, adfs2.0 – Единый вход для приложения .NET, интегрированного с Active Directory

6

У нас есть несколько клиентов, использующих наше веб-приложение (не интранет), некоторые клиенты хотят, чтобы их логин был интегрирован с Active Directory их организаций. Они просто хотят, чтобы пользователь входил в свою учетную запись Windows и мог получить доступ к веб-приложению, не вводя никаких учетных данных пользователя.

Я прочитал несколько статей, касающихся ADFS, но все еще не уверен, как это интегрировать или реализовать. Любое предлагаемое решение?

Спасибо!

Является ли ваше приложение внутренним или размещено в облаке? bloudraak
Вопрос слишком открытый. Похоже, что вы не так много читали об ADFS - иначе вы бы не задали такой вопрос, как «как это реализовать». Вы просто скачиваете ADFS, устанавливаете его рядом с Active Directory, открываете его и делаете ваше федеративное приложение осведомленным о федерации. Есть хорошие книги на эту тему, такие как бесплатная электронная книга от MS, «Претензии на основе идентичности и контроля доступа». Пожалуйста, прочитайте книгу, задайте более конкретные вопросы, и вы получите ответы. Wiktor Zychla
Размещено в облаке. Sabby62
Кстати, реализация аутентификации на основе утверждений, как правило, очень нетривиальна. Kenneth Ito

Ваш Ответ

3   ответа
0

Здесь хороший источник:Карта содержимого AD FS 2.0.

«Электронная книга» являетсяВот.

Я мог бы представить один сценарий, когда вы привязываете свое облачное приложение к Azure ACS, ваши клиенты устанавливают ADFS поверх своей AD и объединяют свои ADFS с ACS. Это даст вам необходимую вам функциональность.

Update after comment:

ADFS может только аутентифицироваться против AD. Он не может аутентифицироваться против БД. Он может получать атрибуты из БД SQL Server, которые затем может преобразовывать в утверждения, т. Е. Он может использовать БД SQL для авторизации.

Если вы хотите пройти аутентификацию на базе данных SQL, вы можете выбрать один из двух вариантов.

Create a custom STS Use an existing "custom" STS like Identity Server which allows this functionality.
Требуется больше понимания следующего: в настоящее время пользователь вошел в веб-приложение, проверив учетные данные, хранящиеся в базе данных. Можно ли реализовать что-то, например, учетную запись пользователя в активном каталоге, сопоставленную с определенной учетной записью в базе данных и имеющую те же роли и функции, что и в базе данных. Sabby62
1

ограничены ли вы использованием ADFS для реализации единого входа. ADFS, безусловно, является одним из способов сделать это. Вы можете посмотреть на OpenID-LDAP(was at www.openid-ldap.org, but project is now defunct) и другиепровайдеры идентификации в качестве альтернативы для реализации SSO.

Одной из альтернатив является реализация поставщика OpenID, который использует встроенную проверку подлинности Windows. Они могут установить его в своей демилитаризованной зоне, открывая доступ к Интернету вместо ADFS. Это может разрешить единый вход из Internet Explorer и Chrome.

Реализация OpenID-провайдера - нетривиальный вопрос. Вам придется обратить пристальное внимание на безопасность. К счастью, есть ряд платформ, таких какDotNetOpenAuth это может помочь вам

При использовании OpenID ваше & quot; облако & quot; Приложение будет действовать в качестве OpenID и получать заявленный идентификатор среди других атрибутов от поставщика OpenID. Вы должны сохранить это в своей базе данных, чтобы однозначно идентифицировать пользователя. Вы можете реализовать поставщика OpenID таким образом, чтобы он также мог предоставлять вашему облачному приложению минимальную информацию, такую как адрес электронной почты, имя человека и т. Д.

Преимущество использования OpenID заключается в том, что ваше «облако» Приложение может продолжать поддерживать других известных поставщиков OpenID, таких как Google и Yahoo без особых изменений.

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

3

Microsoft предоставляет библиотеку под названиемWIF, который используется для связи с AD FS более удобным способом (конфигурация + небольшие адаптации кода для получения утверждений из сообщения аутентификации, предоставленного AD FS).

Есть несколько протоколов, которые поддерживают и AD FS 2.0, и WIF, для обеспечения единого входа наиболее распространенными являются (afaik)SAML 2.0 и WS-Федерация. Оба построены на сообщениях XML, но вам не обязательно знать детали, если вы используете WIF.

Для WS - Federation библиотека WIF предоставляет плагин для Visual Studio, который позволяет настроить ваш сайт в качестве проверяющей стороны с вашей AD FS.

Вы можете использовать учетные данные в вашей БД для идентификации пользователей, вы можете на самом деленастроить Вся страница входа в AD FS и события аутентификации. Однако для базовой установки требуется, чтобы каждый пользователь был определен в вашей Active Directory. Вы также можете использовать свою БД в качестве хранилища утверждений (другая база данных AD FS будет использовать для предоставления проверяющим приложениям информации о пользователях). Обратите внимание, что если вы намереваетесь использовать AD за AD FS, ваша служба AD FS должна иметь к ней доступ и запрашивать LDAP, что, я не уверен, будет работать для вас, если ваши пользователи войдут в свой локальный домен, что AD FS не знаком с.


Если вы не обязаны поддерживать стандартные отраслевые протоколы SSO (я упоминал SAML 2.0), я не уверен, что внедрение AD FS будет таким хорошим решением. Это заставляет вас работать определенным образом, что не всегда так удобно.

WIF ссылка не работает. Путь к Microsoft.
@Maslow Исправлена ссылка.

Похожие вопросы