Опять мне нужен мудрый совет Сообщества !!!
Мне нужно интегрировать несколько веб-приложений в мою систему единого входа.IdP - это службы федерации Active Directory (ADFS2), а SP - это управляемые серверы Weblogic.Я использую привязку HTTP-POST для варианта использования, инициированного SP, в профиле единого входа в Интернет.
Эта настройка работает, и даже я реализовал SLO для WLS, отлично!но всегда есть но ... У меня есть приложение, к которому можно получить доступ для неаутентифицированных пользователей, гостевых пользователей .Когда пользователь аутентифицирован, он / она увидит другую информацию.
Как вы думаете, что будет лучшим подходом для реализации этого?
Я пытаюсь выполнить вызов JavaScript для IdP через XMLHttpRequest , но это не работает так, как я ожидал ... Моя идея не в том, чтобы создать SAMLRequest самостоятельно.Это вместо того, чтобы напрямую вызывать IdP, я запрашиваю безопасный ресурс моего приложения.Таким образом, Weblogic выполняет запрос к IdP (перенаправление 302).По сути, моя идея заключается в следующем:
Объявить ограничение безопасности в моем web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>FederatedUsers</role-name>
</auth-constraint>
Вызов безопасного ресурса (спасибо w3schools!):
<script type="text/javascript">
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "secure/login?action=sample/hello.jsp", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
Реализация защищенного ресурса - это просто сервлет , который перенаправляетк исходному ресурсу:
// Get the parameter "action" and redirect
resp.sendRedirect(req.getParameter("action"));
Более или менее это делает свое дело, если мы посмотрим на поток запросов:
- http://spHost/sample/helloXmlHttpRequest.jsp
- http://spHost/sample/secure/login?action=sample/hello.jsp
- HTTP / 1.1 302 Временно перемещено -> https://idpHost/adfs/ls/?SAMLRequest=...
Но в конце я получаю ошибку в xmlhttp.send () : Компонент возвратил код ошибки: 0x80004005 (NS_ERROR_FAILURE)
Также я пытаюсь сделать неприятные трюки какполучить содержимое элемента iframe или просто вызвать безопасный ресурс в теге сценария:
<script type="text/javascript" src="secure/login">
Проблема этого последнего «решения» заключается вчто я не могу получить код HTML.
Есть идеи? Может быть, ADFS2 предоставляет какой-нибудь сервис REST или что-то в этом роде ...
Заранее спасибо,
Луис