SAML authentication
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
SAML authentication
Уважаемые,
кто нибудь работал с SAML authentication в ASP.NET MVC приложении?
кто нибудь работал с SAML authentication в ASP.NET MVC приложении?
-
- Уже с Приветом
- Posts: 34164
- Joined: 03 Dec 2000 10:01
- Location: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: SAML authentication
Вопрос очевидно должен звучать с каким IDP Вы работали? У меня есть серьезный опыт работы с OpenAM/OpenSSO.shadow7256 wrote:Уважаемые,
кто нибудь работал с SAML authentication в ASP.NET MVC приложении?
Про .нет не могу сказать, но полагаю общие принципы так же соблюдены Java работает через API который сидит на уровне фильтров или поршней (для томкета). Вам походу надо найти просто пример как это делается для вашего типа IDP
"A patriot must always be ready to defend his country against his government." Edward Abbey
-
- Уже с Приветом
- Posts: 20297
- Joined: 01 Dec 2003 23:16
- Location: Russia->USA
Re: SAML authentication
+1. только, я бы сказал, комбинация IDP/SP. Например у нас IDP- DataPower (IBM appliance, но внутрях у неё неонка кажись та-же жаба), а вот SP - и AWS и доморощенные апы с OpenAM фильтром для томкета и SaaS какие-то. Для тестирования IDP на OpenAM тоже былSergunka wrote:Вопрос очевидно должен звучать с каким IDP Вы работали? У меня есть серьезный опыт работы с OpenAM/OpenSSO.shadow7256 wrote:Уважаемые,
кто нибудь работал с SAML authentication в ASP.NET MVC приложении?
Про .нет не могу сказать, но полагаю общие принципы так же соблюдены Java работает через API который сидит на уровне фильтров или поршней (для томкета). Вам походу надо найти просто пример как это делается для вашего типа IDP
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
Маразм крепчал и скрепы гнулись
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: SAML authentication
Ну наверное не совсем так.. позвольте объяснить. Мы только начинаем работать с SAML, клиент поставил условие, чтобы наше web приложение было способно работать так. Итак..поправьте если что не так говорю
1. Браузер посылает запрос на страницу. Юзер не аутентифицирован. Переправляют его на страницу логина на IDP.
2. Юзер логинится, IDP создает SAML token и отсылает пользователя обратно на страницу SP (мое ASP.NET MVC приложение под IIS).
3. SP парсит токен, создает IPrincipal объект и заносит его в HttpContext и в Thread. CurrentPrincipal, создает authentication token и дальше уже все ок.
Вопрос.. где мне в коде перехватить тот момент когда этот Principal добавляется в HttpContext? Мне нужно в этот момент (как можно раньше, еще до того как начнут работать страницы приложения) добавить информацию по этому Principal в мою базу данных.
1. Браузер посылает запрос на страницу. Юзер не аутентифицирован. Переправляют его на страницу логина на IDP.
2. Юзер логинится, IDP создает SAML token и отсылает пользователя обратно на страницу SP (мое ASP.NET MVC приложение под IIS).
3. SP парсит токен, создает IPrincipal объект и заносит его в HttpContext и в Thread. CurrentPrincipal, создает authentication token и дальше уже все ок.
Вопрос.. где мне в коде перехватить тот момент когда этот Principal добавляется в HttpContext? Мне нужно в этот момент (как можно раньше, еще до того как начнут работать страницы приложения) добавить информацию по этому Principal в мою базу данных.
-
- Уже с Приветом
- Posts: 34164
- Joined: 03 Dec 2000 10:01
- Location: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: SAML authentication
Вы бы сказали какой IDP/SP связку собираетесь использовать?shadow7256 wrote:Ну наверное не совсем так.. позвольте объяснить. Мы только начинаем работать с SAML, клиент поставил условие, чтобы наше web приложение было способно работать так. Итак..поправьте если что не так говорю
1. Браузер посылает запрос на страницу. Юзер не аутентифицирован. Переправляют его на страницу логина на IDP.
2. Юзер логинится, IDP создает SAML token и отсылает пользователя обратно на страницу SP (мое ASP.NET MVC приложение под IIS).
3. SP парсит токен, создает IPrincipal объект и заносит его в HttpContext и в Thread. CurrentPrincipal, создает authentication token и дальше уже все ок.
Вопрос.. где мне в коде перехватить тот момент когда этот Principal добавляется в HttpContext? Мне нужно в этот момент (как можно раньше, еще до того как начнут работать страницы приложения) добавить информацию по этому Principal в мою базу данных.
Вот довольно расхожий пример по ОпенАМ и федлет
https://backstage.forgerock.com/#!/docs ... edlet-java" onclick="window.open(this.href);return false;
там все максимально расжеванно. Можно установить за пол дня за день и посмотреть как это живет в натуральную величину.
"A patriot must always be ready to defend his country against his government." Edward Abbey
-
- Уже с Приветом
- Posts: 20297
- Joined: 01 Dec 2003 23:16
- Location: Russia->USA
Re: SAML authentication
1.-3. всё правилно в общих чертах (там ещё валидация, что именно от IDP\не протух..)shadow7256 wrote: Вопрос.. где мне в коде перехватить тот момент когда этот Principal добавляется в HttpContext? Мне нужно в этот момент (как можно раньше, еще до того как начнут работать страницы приложения) добавить информацию по этому Principal в мою базу данных.
В Вашем фреймворке я очевидно не спец, но подозреваю, что Principal как-то можно ехтенднуть и, например, засадить логику в конструктор. или у кортроллера дольжны быть какие-то хукс, чтобы на создание сесси можно было подсесть
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
Маразм крепчал и скрепы гнулись
-
- Уже с Приветом
- Posts: 34164
- Joined: 03 Dec 2000 10:01
- Location: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: SAML authentication
Дело в том, что у Вас походу несколько другой API, на самом деле я мокал HTTPContext и выдергивал редирект URL из него дальше подставляя свои значения. Техника должна быть такая же и у Вас сегодня гляну в своих записках... если найду то опубликую. Всеж лет пять прошло...shadow7256 wrote: Вопрос.. где мне в коде перехватить тот момент когда этот Principal добавляется в HttpContext? Мне нужно в этот момент (как можно раньше, еще до того как начнут работать страницы приложения) добавить информацию по этому Principal в мою базу данных.
"A patriot must always be ready to defend his country against his government." Edward Abbey
-
- Уже с Приветом
- Posts: 34164
- Joined: 03 Dec 2000 10:01
- Location: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: SAML authentication
В общем я код нашел если актуально то могу выслать весь
там важный момент, что я забираю обработку на себя через редирекшин
Тогда мне пришлось еще и свой мок писать сейчас это стандартный API
http://docs.spring.io/spring/docs/curre ... ponse.html" onclick="window.open(this.href);return false;
там важный момент, что я забираю обработку на себя через редирекшин
Code: Select all
MockHttpServletResponse resp = new MockHttpServletResponse();
try {
fedletConnection(request, resp, binding);
} catch (IOException e) {
LOG.error(e.getMessage());
return SAML_ERROR_PAGE;
} catch (ServletException ee) {
LOG.error(ee.getMessage());
return SAML_ERROR_PAGE;
} catch (SAML2Exception e) {
LOG.error(e.getMessage());
return SAML_ERROR_PAGE;
} catch (Exception e) {
LOG.error(e.getMessage());
return SAML_ERROR_PAGE;
}
LOG.info("Redirect URL:" + resp.getRedirectedUrl());
return resp.getRedirectedUrl();
http://docs.spring.io/spring/docs/curre ... ponse.html" onclick="window.open(this.href);return false;
"A patriot must always be ready to defend his country against his government." Edward Abbey
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: SAML authentication
Пасибо буду разбираться
-
- Уже с Приветом
- Posts: 34164
- Joined: 03 Dec 2000 10:01
- Location: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: SAML authentication
Вот здесь я заясняю за СЕМЛ и сею разумное, доброе, вечное - братьям по разуму. Просто чтоб пост не копировать дам ссылку - там много полезного походу можно посмотреть в существующих опен соурсах.shadow7256 wrote:Пасибо буду разбираться
https://forum.predix.io/questions/5046/ ... nswer-5084" onclick="window.open(this.href);return false;
Спрашивайте не стесняйтесь... тема довольно неподъемная в одиночку разбираться прийдется довольно долго.
"A patriot must always be ready to defend his country against his government." Edward Abbey
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: SAML authentication
А да, забыл сказать. В качестве IDP мы используем Windows Federation server for Active Directory.
-
- Уже с Приветом
- Posts: 34164
- Joined: 03 Dec 2000 10:01
- Location: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: SAML authentication
Как там дело с SAML обстоит?shadow7256 wrote:А да, забыл сказать. В качестве IDP мы используем Windows Federation server for Active Directory.
"A patriot must always be ready to defend his country against his government." Edward Abbey
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: SAML authentication
Да вроде разобрались, спасибо
С моей стороны, как разработчику клиента, нужно было правильно настроить конфигурацию Federation Authentication в нашем веб приложении. Указать где находится Identity Provider и куда потом делать Reply. Другая команда настроила этот Windows Federation server for Active Directory (в качестве IDP), чтобы он отсылал нам token, в котором есть все, что нам нужно для правильной аутентификации (Roles, Groups, etc).
ну и последняя часть у меня была задача сделать так, что в случае если идет работа с Federation authentication то сделать новый custom membership provider и работать уже с той информацией, которую мне прислал Identity Provider.
Вообщем пока у нас работает, но посмотрим что будет когда реальный клиент поставит софт у себя
С моей стороны, как разработчику клиента, нужно было правильно настроить конфигурацию Federation Authentication в нашем веб приложении. Указать где находится Identity Provider и куда потом делать Reply. Другая команда настроила этот Windows Federation server for Active Directory (в качестве IDP), чтобы он отсылал нам token, в котором есть все, что нам нужно для правильной аутентификации (Roles, Groups, etc).
ну и последняя часть у меня была задача сделать так, что в случае если идет работа с Federation authentication то сделать новый custom membership provider и работать уже с той информацией, которую мне прислал Identity Provider.
Вообщем пока у нас работает, но посмотрим что будет когда реальный клиент поставит софт у себя
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: SAML authentication
Оказалось все немного сложнее, чем нам казалось.
Что мы сделали у себя это мы имплементировали WS-Federation (у нас Microsoft Web application).
А SAML это немного другое. Принцип тот же, но Sign in протокол, authentication type и token type они разные.
У клиента стоит siteminder в качестве IDP. А мы работали у себя с ADFS.
вообщем напоролись немного на грабли..
Что мы сделали у себя это мы имплементировали WS-Federation (у нас Microsoft Web application).
А SAML это немного другое. Принцип тот же, но Sign in протокол, authentication type и token type они разные.
У клиента стоит siteminder в качестве IDP. А мы работали у себя с ADFS.
вообщем напоролись немного на грабли..
-
- Уже с Приветом
- Posts: 1665
- Joined: 16 Jul 2009 14:18
- Location: Uganda
Re: SAML authentication
О, а подробнее можно на эту тему? У меня ситуация еще хуже - надо на SAML сервер из c# консоли ходить... WF-Federation будет третьим шагом, если не дальше..shadow7256 wrote:вообщем напоролись немного на грабли..
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: SAML authentication
Сначала мы использовали WIF модуль (Windows Identity Framework).. а это не SAML, это WS-Federation... потом мы взяли third party component - kentor for ASP.NET. Вот через него и сделали реальный SAML. Там тоже не все просто.. с ASP.NET MVC он вроде почти сразу заработал, там главное в конфиг файле приложения его правильно настроить.. но в другом приложении (Backbone, SPA), вот там у нас один чувак реально менял до фига чего.. как ходить на SAML сервер из консоли я не знаюmynameiszb wrote:О, а подробнее можно на эту тему? У меня ситуация еще хуже - надо на SAML сервер из c# консоли ходить... WF-Federation будет третьим шагом, если не дальше..shadow7256 wrote:вообщем напоролись немного на грабли..
-
- Уже с Приветом
- Posts: 1665
- Joined: 16 Jul 2009 14:18
- Location: Uganda
Re: SAML authentication
Понял, буду копать.shadow7256 wrote:Сначала мы использовали WIF модуль (Windows Identity Framework).. а это не SAML, это WS-Federation... потом мы взяли third party component - kentor for ASP.NET. Вот через него и сделали реальный SAML. Там тоже не все просто.. с ASP.NET MVC он вроде почти сразу заработал, там главное в конфиг файле приложения его правильно настроить.. но в другом приложении (Backbone, SPA), вот там у нас один чувак реально менял до фига чего.. как ходить на SAML сервер из консоли я не знаю
Там две неприятных фишки. Первая - это отсутствие внятного описания для шарпа - как на SAML сервера ходить. Технология с точки зрения MS - чужая, поэтому ничего толком нет. Типа - берите стандарт и сами ручками. Мы объекты под .Net 4.5 добавили, значит, осилите.
И если через WIF ходить - то надо бриджи писать, которые будут один стандарт в другой переводить. Под Asp.Net где-то на форумах по крохам мелькает, что народ это делал или даже куски исходников есть. Но они для консоли сильно отличаются - объекты другие, идеология вообще другая.
-
- Уже с Приветом
- Posts: 9392
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: SAML authentication
абсолютно точно. Нам крупно повезло, что мы нашли этот kentor проект. У МС для SAML ничего нет. Под ADFS пожалуйста. Я помню мы так обрадовались, когда дали клиенту версию нашего софта (WS Federation), довольно быстро разобрались как сделать..а потом очень сильно разочаровались, когда оказалось, что это не то, что нужно. Если бы не kentor, не знаю что было бы...mynameiszb wrote:Технология с точки зрения MS - чужая, поэтому ничего толком нет.