2014-01-22 2 views
1

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

Требование:

  1. агента войти в системе Windows (пользователя интегрированы в Active Directory)
  2. Откройте свой веб-страницу
  3. Основываясь на том, кто вошел в окно, мое приложение идет в AD и тянуть некоторые пользователь указать данные (например, адрес электронной почты, телефон)

Как мне это сделать?

Как я понимаю, для этого мне потребуется ADFS. Итак:

  1. Пользователь идет на моей веб-странице

  2. Моя веб-страница требует некоторых веб-службы или веб-приложение (которое построить на C#)

  3. Это будет аутентифицировать против AD FS и получить заявку

  4. Либо получите номер телефона и адрес электронной почты в запросе или получите имя пользователя и запрос по AD для телефона и электронной почты

  5. Возвращение данных на моей веб-странице (построить на JavaScript)

Кажется, что-то не так в моем понимании !!

Просьба предложить более подходящее решение, основанное на моем требовании

+0

Я полагаю, что большинство безопасности здесь полагается на сервере. Без этого это может быть невозможно. Даже если это так, кажется странным, что вы попытаетесь обработать всю клиентскую сторону безопасности. Это звучит довольно слабо для меня. Есть ли какая-то причина, в частности, вы не хотите использовать какой-либо серверный язык? – Kulahan

ответ

3

Честно говоря, я не могу придумать способ, чтобы заставить его работать без обработки на стороне сервера. Это связано с тем, что протокол ADS ws-федерации использует не только возврат заявок.

Резервирование SAML токен. Токен содержит утверждения, но самое главное, что это , подписанный с использованием XMLDsig. Как вы собираетесь проверить токен, это первый большой вопрос. Но есть, конечно, внешние библиотеки, которые позволяют это.

Но тогда такую ​​аутентификацию можно легко обойти, изменив скрипты в браузере. Это связано с тем, что ws-федерация останавливается там, где вы получаете токен, а затем вы можете обменять токен на фактическую идентификацию. И это не будет работать при обработке только на стороне клиента.

3

ADFS 3 не поддерживает неявный профиль OAuth2, который был бы вариантом, но все же вам нужно будет проверить токен на сервере, чтобы избежать фиксации сеанса.

Вы можете установить что-то вроде AuthorizationServer, который поддерживает oauth2/OpenID Connect неявное профиль http://leastprivilege.com/2013/09/19/adding-oauth2-to-adfs-and-thus-bridging-the-gap-between-modern-applications-and-enterprise-back-ends/

Другой вариант заключается в использовании что-то вроде Auth0 (Отказ от ответственности: Я работаю Auth0), который также поддерживает OAuth2/OpenID Connect профиль implciit.В этом случае вам не нужна ADFS, в вашей сети есть соединитель/агент, который не требует открытия брандмауэров или чего-то еще, и он поддерживает неявный профиль, подходящий для приложений JavaScript. Это пример одной страницы приложения учебника (если вы создаете учетную запись будет адаптировать документ с учетными данными):

https://docs.auth0.com/singlepageapp-tutorial

Смежные вопросы