как IIS использует saml2.0 для доступа к adfs - PullRequest
0 голосов
/ 25 октября 2019

Как IIS использует saml2.0 для доступа к adfs?

По моему мнению, IIS необходимо развернуть веб-приложение для доступа к adfs, отправив запрос с saml 2.0.

Но досейчас я не нашел способа развернуть веб-приложение, которое может отправлять saml2.0.

Нужно ли использовать isapi или Shibboleth?

Разрешение: (1)Shibboleth SP должен установить сеанс SSO / HTTP-сеанс входа в систему после извлечения информации о пользователе из ответа SAML, отправленного IdP SAML. (2) Вставьте информацию о пользователе в сеанс SSO / HTTP-сеанс входа. Как вставлять и извлекать данные из сеансов вместо базы данных в Asp.net MVC C # предоставляет инструкции о том, как вставлять данные в сеанс HTTP (в IIS) и извлекать данные из сеанса HTTP (в Glassfish).

// В сеансе IIS ["HTTP_MAIL"] = Request.Headers ["HTTP_MAIL"];

// В Glassfish после строки перенаправления HTTP user_email = Session ["HTTP_MAIL"];

Спасибо за ответ!

Позвольте мне рассказать о том, что я знаю в первую очередь. Если что-то не так, укажите

  1. Shibboleth SP. Сохраните значение, принадлежащее ответу SAML, полученному из SAML Idp (на этот раз ADFS), в три места (※)и мы можем видеть это в https://SP's имя домена / Shibboleth.sso / Session

    ※ ※Session ②Server Variables ③Request Заголовки относятся к SP AttributeAccess

  2. После того, как Shibboleth SP сохранит значение, автоматически перейдет к интерфейсу, доступному в браузере.

  3. В VarServer Variables и ③Request Headers есть информация, так что приложения выше IIS могут получитьэто через следующий код через почту и HTTP_MAIL может получить значение.

<% @ Page Language="C#" %>
<%
Response.Write("<h3>Server Variables</h3>");
Response.Write("Name = " + Request["name"] + "<br>");
Response.Write("Email = " + Request["mail"] + "<br>");
Response.Write("Tel = " + Request["tel"] + "<br>");

%>

результат:

Server Variables
Name = tom
Email = tom@yahoo.com
Tel = 0251-4584-635

вопроскогда используется HTTP Redirect (HTTP Rewrite и другие способы тоже подойдут) , Как вышеприведенные значения передаются glassfish ~

См. ваш ответ, я сделал следующие вещи ~

  1. модификацияЕсли программа выше iis к этому:
<% @ Page Language="C#" %>
<%
Response.Write("<h3>Server Variables</h3>");
Response.Write("Name = " + Request["name"] + "<br>");
Response.Write("Email = " + Request["mail"] + "<br>");
Response.Write("Tel = " + Request["tel"] + "<br>");

Session["HTTP_MAIL"] = Request["HTTP_MAIL"];     ※set value to Session
Response.Write("Mail2 = " + Session["HTTP_TEST"] + "<br>");  

%>
создайте для этого приложение Glassfish:
@RequestMapping(value = "/info2", method = RequestMethod.GET)
    public Object getUserInfo2(HttpSession session, Model model) {
    Enumeration<String> headerNames  = session.getAttributeNames();
    StringBuffer stringBuffer = new StringBuffer();
    while (headerNames.hasMoreElements()) {
            String key = (String) headerNames.nextElement();
            String value = (String) session.getAttribute(key);
            stringBuffer.append(key + ":" + value + "\n");
        } 
        model.addAttribute("StringBuffer", stringBuffer);
        return "index";

    }

в сеансе ничего нет.

похоже, что использование функции перенаправления HTTP IIS для перенаправления приложения в IIS перед его выполнением,Другими словами, назначение сеанса, по-видимому, не было выполнено

Правильно ли я это сделал?

1 Ответ

1 голос
/ 25 октября 2019

Вопрос № 1 :

Как IIS использует saml2.0 для доступа к adfs?

По моему мнению, IIS необходимо развернуть веб-приложение для доступа к adfsотправив запрос с помощью saml 2.0.

Ответ :

Да. Ты прав.

(1) IIS необходимо развернуть SAML SP (поставщик услуг) для отправки запроса аутентификации SAML в ADFS.

(2) Необходимо настроить ADFS для использования SAML IdP (Identity Provider).

Официальный веб-сайт Microsoft Добавить ADFS в качестве поставщика идентификации SAML содержит инструкциюо том, как настроить ADFS для SAML IdP.

Вопрос № 2 :

Должен ли он использовать isapi или Shibboleth?

Ответ :

Вы можете развернуть Shibboleth SP (поставщик услуг) на IIS.

Официальная ссылка Shibboleth SP с IIS содержит инструкции по развертыванию. Shibboleth SP на IIS.

Дополнительный вопрос № 1 :

Окончательный эффект таков: конечная точка adfs:

iis.*.com/Shibboleth.sso/SAML2/POST
iis.*.com/Shibboleth.sso/SAML2/Artifact

Однако adfs возвращается как сообщение, и я не получил информацию в заголовке запроса через программу на стороне iis

См. Этот веб-сайт Shibboleth SP для IIS で SAML 対 応

Как я могу получить данные, возвращенные adfs через get

Ответ :

(1) Shibboleth SP AssertionConsumerService НЕ предоставляет конечную точку / URL-адрес «HTTP-Redirect» для «GET».

(I) Вы НЕ можете «получить данные, возвращенные adfs через get»,

(II) Вы должны получить данные, возвращаемые adfs через POST.

(2) Предположим, что ваш веб-сайт https://shibbolethiis.int.secioss.work

(I) Конечная точка / URL AssertionConsumerService Shibboleth SP, показанная вашими метаданными Shibboleth SP "https://shibbolethiis.int.secioss.work/Shibboleth.sso/Metadata"

<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://shibbolethiis.int.secioss.work/Shibboleth.sso/SAML2/POST" index="1"/>

(II) Цитировать ссылку из вашего комментария, т.е. Shibboleth SP для IIS で SAML 対 応

「Веб-сайт по умолчанию」 を 選 択 し 択IIS を 再 起動 再 ま す。

で れ で ib Shibboleth-SP の 設定 は 終了 で す の の の の の のな が の て い る 場合 、 以下 以下 よ う な な な な の の の の の の の Статус タ 内容 内容 が ОК*https://shibbolethiis.int.secioss.work/Shibboleth.sso/Session

Приведенный выше URL-адрес сеанса Shibboleth SP должен отображать информацию о пользователе, переносимую ответом SAML, отправленным ADFS

Если вы НЕ можете найти какую-либо информацию пользователя по указанному выше URL-адресу сеанса Shibboleth SP

(III.a) Настройка ADFS для отправки пользователяинформация с атрибутом SAML / утверждение SAML / ответ SAML

(III.b) Измените Shibboleth SP "attribute-map.xml", чтобы принимать атрибуты SAML, отправленные ADFS, со ссылкой на пример, предоставленный Shibboleth SPshibboleth-sp-testapp / shibboleth-sp / attribute-map.xml в репозитории GitHub.

Обычно Shibboleth SP использует атрибут SAML, такой как атрибут "mail" (например, ethan.smith@example. com) для входа пользователя на ваш сайт.

(4) Замечания :

(I) Как собрать и запустить Shibboleth SAML IdP и SPИспользование контейнера Docker в репозитории GitHub предоставляет пример конфигурации Shibboleth SP.

(II) Для вашего удобства я сделал новый коммит для добавления атрибутов ADFS в Shibboleth SP shibboleth-sp-testapp / shibboleth-sp / attribute-map.xml в приведенном вышеGitHub хранилище. Обратите внимание, что я использовал те же атрибуты ADFS для успешного входа в учетную запись Box.

(III) Настройка атрибутов для SAML 2.0 и ADFS 3.0 предоставляет ценную информацию и обсуждение того, как Shibboleth SPизвлечь пользовательскую информацию / данные, возвращенные ADFS через "attribute-map.xml".

Последующий вопрос № 2 :

После изменения атрибута. XML и посетите shibboleth.sso / Session, он может отображать следующую информацию.

Attributes mail: 1 value(s) 
tel: 1 value(s) 

См. Этот сайт Shibboleth SP для IIS IS SAML 対 応

5.動作確認 

Display the following information 

HTTP_MAIL:ya*@cn.*.com 
HTTP_TEL:17* 

как я могу получить информацию из заголовка запроса, когда перенаправляю его на glassfish с помощью функции перенаправления HTTP iis?

Ответ :

ДругойВопрос StackOverflow Получение значения Request.Headers предоставляет решение о том, как получить информацию из заголовка запроса с использованием C #, например,

if (Request.Headers["HTTP_MAIL"] != null) {
    string user_email = Request.Headers["HTTP_MAIL"];
}

Последующий вопрос № 3:

Вместо того, чтобы спрашивать, как получить заголовки в IIS, у меня возникает вопрос, как получить информацию для входа на glassfish ~ Другими словами, как я могу передать информацию заголовка запроса на glassfish после получения отIis? Я также задал вопрос в glassfish get атрибут shibboleth sp на iis , и он более подробен, чем его текущий комментарий.

Ответ :

С точки зрения кибербезопасности, вы НЕ можете перенаправлять информацию о пользователе, чтобы установить HTTP-сеанс входа в систему для приложения Glassfish. В противном случае хакеры могут использовать ту же информацию о пользователе для входа в приложение Glassfish без какой-либо аутентификации, такой как локальная аутентификация по имени пользователя / паролю или сторонняя аутентификация SAML.

Последующий вопрос № 4 :

когда используется HTTP Redirect (HTTP Rewrite и другие способы тоже подойдут) , Как вышеприведенные значения передаются Glassfish?

в сеансе ничего нет.

itКажется, что использование функции перенаправления HTTP IIS для перенаправления приложения в IIS до его запуска. Другими словами, назначение сеанса, по-видимому, не было выполнено

Правильно ли я это сделал?

Ответ :

(1) ApacheGlassFish, IIS, Jetty и Tomcat можно рассматривать как параллельные веб-серверы для размещения веб-приложений.

Лучшие серверы приложений Java: Tomcat против Jetty против GlassFish против WildFly

Microsoft IIS против Apache Tomcat: В чем различия?

Microsoft IIS and Apache Tomcat belong to "Web Servers" category of the tech stack.

Windows Server 2016 может запускать как веб-сервер IIS 10, так и веб-сервер GlassFish 5.1.0, тогда как веб-сервер IIS 10 и веб-сервер GlassFish 5.1.0 могут запускать свои собственные веб-приложения.

(2) С точки зрения кибербезопасности, другое веб-приложение должно установить свой сеанс входа в систему HTTP на своем внутреннем сервере (таком как Apache, Glassfish, IIS, JETTY и Tomcat) после того, как их пользователь был аутентифицирован сторонним IdP SAML(например, Shibboleth SAML IdP).

Таким образом, вы НЕ можете перенаправлять информацию пользователя из IIS в Glassfish, поскольку IIS и Glassfish должны устанавливать свои собственные различные сеансы HTTP для своего пользователя, которому предоставлен доступ к веб-приложению.

Разрешение :

Вы можете использовать OneLogin Java SAML SP takeit ( Кодировать Java-приложение на Pиспользуйте SSO через OneLogin ) для создания SAML SP для вашего веб-приложения GlassFish на основе Java.

Обратите внимание, что OneLogin SAML SP для вашего веб-приложения GlassFish на основе Java может взаимодействовать с любым IdP SAML, включая их собственный OneLoginSAML IdP, Shibboleth SAML IdP, работающий в Docker-контейнере , или SAML IdP, предоставляемый нашей системой аутентификации и авторизации с нулевым паролем .

...