CreateHostedIDP.jsp revision e8721886dbfd32e88cc7077cbee4b6bb1b44b443
0N/A<%--
0N/A DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
0N/A
0N/A Copyright (c) 2008 Sun Microsystems Inc. All Rights Reserved
0N/A
0N/A The contents of this file are subject to the terms
0N/A of the Common Development and Distribution License
0N/A (the License). You may not use this file except in
0N/A compliance with the License.
0N/A
0N/A You can obtain a copy of the License at
0N/A https://opensso.dev.java.net/public/CDDLv1.0.html or
0N/A opensso/legal/CDDLv1.0.txt
0N/A See the License for the specific language governing
0N/A permission and limitations under the License.
0N/A
0N/A When distributing Covered Code, include this CDDL
0N/A Header Notice in each file and include the License file
873N/A at opensso/legal/CDDLv1.0.txt.
0N/A If applicable, add the following below the CDDL Header,
0N/A with the fields enclosed by brackets [] replaced by
0N/A your own identifying information:
0N/A "Portions Copyrighted [year] [name of copyright owner]"
0N/A
3034N/A $Id: CreateHostedIDP.jsp,v 1.15 2009/07/20 23:03:23 asyhuang Exp $
0N/A
0N/A--%>
0N/A
0N/A<%@ page info="CreateHostedIDP" language="java" %>
0N/A<%@taglib uri="/WEB-INF/jato.tld" prefix="jato" %>
0N/A<%@taglib uri="/WEB-INF/cc.tld" prefix="cc" %>
0N/A<%
0N/A request.setCharacterEncoding("UTF-8");
3012N/A%>
3012N/A<jato:useViewBean
3012N/A className="com.sun.identity.console.task.CreateHostedIDPViewBean"
1083N/A fireChildDisplayEvents="true" >
1083N/A
1083N/A<cc:i18nbundle baseName="amConsole" id="amConsole"
1083N/A locale="<%=((com.sun.identity.console.base.AMViewBeanBase)viewBean).getUserLocale()%>"/>
1083N/A
1083N/A<cc:header name="hdrCommon" pageTitle="webconsole.title" bundleID="amConsole" copyrightYear="2008" fireDisplayEvents="true">
1083N/A
1083N/A<link rel="stylesheet" type="text/css" href="../console/css/openam.css" />
1083N/A
1083N/A<script language="javascript" src="../console/js/am.js"></script>
1083N/A<script language="javascript" src="../console/js/tasksPage.js"></script>
1083N/A<script language="javascript" src="../com_sun_web_ui/js/dynamic.js"></script>
233N/A
712N/A<div id="main" style="position: absolute; margin: 0; border: none; padding: 0; width:auto; height:1000">
1177N/A<div id="divhelp" style="display: none; position:absolute; margin: 0; border: 1px solid #AABCC8; padding: 0; width:400px; height:200px; background:#FCFCFC">
564N/A<table border=0 cellpadding=2 cellspacing=0 width="100%">
0N/A<tr><td width=99%><span id="divHelpmsg" /></td>
0N/A<td width="1%" valign="top">
0N/A<img src="../console/images/tasks/close.gif" width="16" height="16" onClick="hideHelp()" />
0N/A</td>
712N/A</tr>
0N/A</table>
0N/A</div>
0N/A
0N/A
0N/A<cc:form name="CreateHostedIDP" method="post">
233N/A<jato:hidden name="szCache" />
233N/A
0N/A<cc:primarymasthead name="mhCommon" bundleID="amConsole" logoutOnClick="return confirmLogout();" locale="<%=((com.sun.identity.console.base.AMViewBeanBase)viewBean).getUserLocale()%>"/>
0N/A<table border="0" cellpadding="10" cellspacing="0" width="100%">
0N/A <tr>
0N/A <td>
0N/A <cc:alertinline name="ialertCommon" bundleID="amConsole" />
0N/A </td>
0N/A </tr>
0N/A</table>
567N/A
567N/A<%-- PAGE CONTENT --------------------------------------------------------- --%>
567N/A<cc:pagetitle name="pgtitle" bundleID="amConsole" pageTitleText="page.title.configure.hosted.idp" showPageTitleSeparator="true" viewMenuLabel="" pageTitleHelpMessage="" showPageButtonsTop="true" showPageButtonsBottom="false" />
567N/A
2046N/A<table border="0" cellpadding="20" cellspacing="0">
2046N/A<tr><td>
1210N/A <cc:text name="txtDesc" defaultValue="page.desc.configure.hosted.idp" bundleID="amConsole" />
2033N/A</td></tr>
712N/A</table>
2033N/A
2046N/A<cc:propertysheet name="propertyAttributes" bundleID="amConsole" showJumpLinks="false"/>
712N/A
675N/A</cc:form>
675N/A</div>
712N/A<div id="dlg" class="dvs" style="height:200px"></div>
675N/A
567N/A<script language="javascript">
0N/A metadiv = document.getElementById("meta");
422N/A metadivDisplay = metadiv.style.display;
712N/A
422N/A function confirmLogout() {
0N/A return confirm("<cc:text name="txtLogout" defaultValue="masthead.logoutMessage" bundleID="amConsole"/>");
422N/A }
0N/A
422N/A function openWindow(fieldName) {
0N/A selectWin = window.open('../federation/FileUploader', fieldName,
0N/A 'height=300,width=650,top=' +
0N/A ((screen.height-(screen.height/2))-(500/2)) +
0N/A ',left=' + ((screen.width-650)/2));
902N/A selectWin.focus();
902N/A }
902N/A
902N/A function metadataOptionSelect(radio) {
0N/A var infodiv = document.getElementById("info");
0N/A hasMetaData = radio.value;
0N/A if (radio.value == 'yes') {
0N/A infodiv.style.display = 'none';
233N/A metadiv.style.display = '';
233N/A document.getElementById('cotsection').style.display = 'none';
233N/A document.getElementById('cotq').style.display = 'none';
233N/A document.getElementById('cottf').style.display = 'none';
730N/A document.getElementById('cotchoice').style.display = 'none';
730N/A } else {
730N/A infodiv.style.display = '';
0N/A metadiv.style.display = 'none';
729N/A document.getElementById('cotsection').style.display = '';
729N/A document.getElementById('cotq').style.display = '';
729N/A var realm = frm.elements['CreateHostedIDP.tfRealm'].value;
0N/A getCircleOfTrust(realm);
0N/A }
0N/A }
110N/A
110N/A function metaOptionSelect(radio) {
121N/A if (radio.value == 'url') {
699N/A frm.elements['CreateHostedIDP.tfMetadataFileURL'].style.display = '';
0N/A frm.elements['CreateHostedIDP.btnMetadata'].style.display = 'none';
0N/A document.getElementById('metadatafilename').style.display = 'none';
1008N/A } else {
1008N/A frm.elements['CreateHostedIDP.tfMetadataFileURL'].style.display = 'none';
1008N/A frm.elements['CreateHostedIDP.btnMetadata'].style.display = '';
1008N/A document.getElementById('metadatafilename').style.display = '';
1008N/A }
2086N/A }
2086N/A
2086N/A function extendedOptionSelect(radio) {
2086N/A if (radio.value == 'url') {
2086N/A frm.elements['CreateHostedIDP.tfExtendedFileURL'].style.display = '';
1177N/A frm.elements['CreateHostedIDP.btnExtendedFile'].style.display = 'none';
1177N/A document.getElementById('extendedfilename').style.display = 'none';
0N/A } else {
0N/A frm.elements['CreateHostedIDP.tfExtendedFileURL'].style.display = 'none';
0N/A frm.elements['CreateHostedIDP.btnExtendedFile'].style.display = '';
0N/A document.getElementById('extendedfilename').style.display = '';
0N/A }
0N/A }
0N/A
0N/A function cancelOp() {
0N/A document.location.replace("../task/Home");
1344N/A return false;
1177N/A }
1177N/A
0N/A function realmSelect(radio) {
0N/A getCircleOfTrust(radio.value);
0N/A }
0N/A
0N/A function cotOptionSelect(radio) {
0N/A var ans = radio.value;
1395N/A if (ans == 'yes') {
1177N/A document.getElementById('cotchoice').style.display = '';
1177N/A document.getElementById('cottf').style.display = 'none';
0N/A frm.elements['CreateHostedIDP.tfCOT'].value = '';
0N/A } else {
0N/A document.getElementById('cotchoice').style.display = 'none';
0N/A document.getElementById('cottf').style.display = '';
0N/A }
0N/A }
1177N/A
1177N/A function getExtendedData() {
0N/A var extRadio = getRadioVal(frm, 'CreateHostedIDP.radioExtendedData');
0N/A var extended = (extRadio == 'url') ?
0N/A frm.elements['CreateHostedIDP.tfExtendedFileURL'].value :
0N/A frm.elements['CreateHostedIDP.tfExtendedFile'].value;
0N/A extended = extended.replace(/^\s+/, "");
0N/A extended = extended.replace(/\s+$/, "");
1395N/A return extended;
1177N/A }
1177N/A
0N/A function getCircleOfTrustFromExt() {
0N/A var extended = getExtendedData();
2086N/A if (extended.length == 0) {
2086N/A return;
2086N/A }
2086N/A
2086N/A document.getElementById('dlg').style.top = '400px';
2086N/A fade();
2086N/A document.getElementById('dlg').innerHTML = '<center>' +
2086N/A msgGetCOTs + '</center>';
2086N/A var url = "../console/ajax/AjaxProxy.jsp";
2086N/A var params = 'locale=' + userLocale +
2086N/A '&class=com.sun.identity.workflow.GetCircleOfTrusts' +
2086N/A '&extendeddata=' + escapeEx(extended);
2086N/A ajaxPost(ajaxObj, url, params, circleOfTrust);
2086N/A }
2086N/A
2086N/A function hideRealm() {
2086N/A var frm = document.forms['CreateHostedIDP'];
2086N/A var realmobj = frm.elements['CreateHostedIDP.tfRealm'];
2086N/A if (realmobj.options.length < 2) {
2086N/A document.getElementById('realmlbl').style.display = 'none';
2086N/A document.getElementById('realmfld').style.display = 'none';
2086N/A }
2086N/A }
2086N/A hideRealm();
2086N/A
2086N/A var msgConfiguring = "<cc:text name="txtConfiguring" defaultValue="configure.provider.waiting" bundleID="amConsole" escape="false" />";
2086N/A
2086N/A var closeBtn = "<p>&nbsp;</p><p><div class=\"TtlBtnDiv\"><input name=\"btnClose\" type=\"submit\" class=\"Btn1\" value=\"<cc:text name="txtCloseBtn" defaultValue="ajax.close.button" bundleID="amConsole" escape="false" />\" onClick=\"focusMain();return false;\" /></div></p>";
2086N/A
2086N/A var msgGetCOTs = "<cc:text name="txtConfigured" defaultValue="configure.provider.get.cots" bundleID="amConsole" escape="false" />";
2086N/A
2086N/A var msgMissingAttrMappingValues = "<cc:text name="txtMissingAttrValues" defaultValue="configure.provider.missing.attribute.mapping.values" bundleID="amConsole" escape="false" />" + "<p>" + closeBtn + "</p>";
2284N/A
2284N/A var hasMetaData = 'no';
2284N/A var frm = document.forms['CreateHostedIDP'];
2086N/A var btn1 = frm.elements['CreateHostedIDP.button1'];
2086N/A btn1.onclick = submitPage;
2086N/A var btn2 = frm.elements['CreateHostedIDP.button2'];
2086N/A btn2.onclick = cancelOp;
2086N/A var ajaxObj = getXmlHttpRequestObject();
2086N/A var data = '';
2086N/A var selectOptionCache;
2086N/A var userLocale = "<%= viewBean.getUserLocale().toString() %>";
2086N/A
2086N/A function submitPage() {
2086N/A document.getElementById('dlg').style.top = '300px';
2086N/A fade();
2086N/A if (document.getElementById('cotsection').style.display != '') {
2086N/A var extended = getExtendedData();
2086N/A if (extended.length > 0) {
2086N/A if (hasMetaData) {
2086N/A getCircleOfTrustFromExt();
2086N/A } else {
2086N/A var realm = frm.elements['CreateHostedIDP.tfRealm'].value;
2086N/A getCircleOfTrust(realm);
2086N/A }
2086N/A focusMain();
2086N/A return false;
2086N/A }
2086N/A }
2086N/A document.getElementById('dlg').innerHTML = '<center>' +
2086N/A msgConfiguring + '</center>';
2086N/A var url = "../console/ajax/AjaxProxy.jsp";
2086N/A var params = 'locale=' + userLocale +
2086N/A '&class=com.sun.identity.workflow.CreateHostedIDP' + getData();
2086N/A ajaxPost(ajaxObj, url, params, configured);
2086N/A return false;
2086N/A }
2086N/A
2086N/A function getData() {
2086N/A var cot;
3034N/A var cotRadio = getRadioVal(frm, 'CreateHostedIDP.radioCOT');
3034N/A if (cotRadio == "yes") {
3034N/A cot = frm.elements['CreateHostedIDP.choiceCOT'].value;
2086N/A } else {
0N/A cot = frm.elements['CreateHostedIDP.tfCOT'].value;
0N/A }
0N/A if (hasMetaData == "yes") {
2086N/A var metaRadio = getRadioVal(frm, 'CreateHostedIDP.radioMeta');
0N/A var meta = (metaRadio == 'url') ?
0N/A frm.elements['CreateHostedIDP.tfMetadataFileURL'].value :
2342N/A frm.elements['CreateHostedIDP.tfMetadataFile'].value;
1008N/A var extRadio = getRadioVal(frm, 'CreateHostedIDP.radioExtendedData');
1008N/A var extended = (extRadio == 'url') ?
1008N/A frm.elements['CreateHostedIDP.tfExtendedFileURL'].value :
1008N/A frm.elements['CreateHostedIDP.tfExtendedFile'].value;
0N/A
0N/A return "&metadata=" + escapeEx(meta) +
0N/A "&extendeddata=" + escapeEx(extended) +
1177N/A "&cot=" + escapeEx(cot) +
121N/A "&attributemappings=" + escapeEx(getNameAttributeMapping());
1177N/A } else {
1177N/A var realm = frm.elements['CreateHostedIDP.tfRealm'].value;
1177N/A return "&entityId=" +
0N/A escapeEx(frm.elements['CreateHostedIDP.tfEntityId'].value) +
0N/A "&realm=" + escapeEx(realm) +
1273N/A "&idpscert=" +
1273N/A escapeEx(frm.elements['CreateHostedIDP.tfSigningKey'].value) +
1273N/A "&cot=" + escapeEx(cot) +
1273N/A "&attributemappings=" + escapeEx(getNameAttributeMapping());
1273N/A }
1273N/A }
1273N/A
1273N/A function getNameAttributeMapping() {
1273N/A var attrMappings = '';
1273N/A var table = getActionTable();
1273N/A var rows = table.getElementsByTagName('TR');
1273N/A for (var i = rows.length-1; i >=3; --i) {
1273N/A var inputs = rows[i].getElementsByTagName('input');
1273N/A var cb = inputs[0];
1273N/A attrMappings += cb.getAttribute("value") + '|';
1273N/A }
1273N/A return attrMappings;
1273N/A }
1273N/A
1273N/A function getCircleOfTrust(realm) {
1273N/A var url = "../console/ajax/AjaxProxy.jsp";
1273N/A var params = 'locale=' + userLocale +
1273N/A '&class=com.sun.identity.workflow.GetCircleOfTrusts' +
1273N/A '&realm=' + escapeEx(realm);
1273N/A ajaxPost(ajaxObj, url, params, circleOfTrust);
1273N/A }
1273N/A
1273N/A function circleOfTrust() {
1960N/A if (ajaxObj.readyState == 4) {
1273N/A var result = hexToString(ajaxObj.responseText);
1273N/A var status = result.substring(0, result.indexOf('|'));
0N/A var result = result.substring(result.indexOf('|') +1);
121N/A var msg = '';
1177N/A if (status == 0) {
1177N/A document.getElementById('cotsection').style.display = '';
1177N/A result = result.replace(/^\s+/, '');
1177N/A result = result.replace(/\s+$/, '');
1177N/A if (result.length == 0) {
1559N/A document.getElementById('cotq').style.display = 'none';
1559N/A document.getElementById('cotchoice').style.display = 'none';
1559N/A document.getElementById('cottf').style.display = '';
2556N/A chooseRadio(frm, 'CreateHostedIDP.radioCOT', 'no');
0N/A } else {
1234N/A var cots = result.split('|');
1234N/A var choiceCOT = frm.elements['CreateHostedIDP.choiceCOT'];
0N/A for (var i = 0; i < cots.length; i++) {
0N/A var decodedCOT = decodeURIComponent(cots[i]);
984N/A choiceCOT.options[i] = new Option(decodedCOT,
0N/A decodedCOT);
0N/A }
0N/A document.getElementById('cotq').style.display = '';
0N/A document.getElementById('cotchoice').style.display = '';
0N/A document.getElementById('cottf').style.display = 'none';
984N/A chooseRadio(frm, 'CreateHostedIDP.radioCOT', 'yes');
984N/A }
984N/A focusMain();
984N/A } else {
902N/A msg = '<center><p>' + result + '</p></center>';
902N/A msg = msg + '<center>' + closeBtn + '</center>';
0N/A document.getElementById('dlg').innerHTML = msg;
0N/A document.getElementById('cotsection').style.display = 'none';
0N/A ajaxObj = getXmlHttpRequestObject();
0N/A }
0N/A }
0N/A }
0N/A
0N/A function configured() {
0N/A if (ajaxObj.readyState == 4) {
0N/A var result = hexToString(ajaxObj.responseText);
0N/A var status = result.substring(0, result.indexOf('|'));
0N/A var result = result.substring(result.indexOf('|') +1);
0N/A var msg = '';
0N/A if (status == 0) {
0N/A var idx = result.indexOf('|||');
0N/A data = result.substring(idx +3);
0N/A var cot;
0N/A var cotRadio = getRadioVal(frm, 'CreateHostedIDP.radioCOT');
729N/A if (cotRadio == "yes") {
729N/A cot = frm.elements['CreateHostedIDP.choiceCOT'].value;
729N/A } else {
729N/A cot = frm.elements['CreateHostedIDP.tfCOT'].value;
729N/A }
729N/A document.location.replace('CompleteCreateHostedIDP?cot=' + cot + '&' + data);
729N/A } else {
729N/A msg = '<center><p>' + result + '</p></center>';
729N/A msg = msg + '<center>' + closeBtn + '</center>';
729N/A ajaxObj = getXmlHttpRequestObject();
729N/A }
729N/A document.getElementById('dlg').innerHTML = msg;
729N/A }
729N/A }
729N/A
729N/A function addAttrMapping() {
729N/A var name = frm.elements['CreateHostedIDP.tfAttrMappingName'].value;
729N/A var assertn = frm.elements['CreateHostedIDP.tfAttrMappingAssertion'].value;
729N/A name = name.replace(/^\s+/, '');
729N/A name = name.replace(/\s+$/, '');
729N/A assertn = assertn.replace(/^\s+/, '');
0N/A assertn = assertn.replace(/\s+$/, '');
0N/A if ((name == '') || (assertn == '')) {
1344N/A document.getElementById('dlg').style.top = '600px';
1344N/A fade();
1344N/A document.getElementById('dlg').innerHTML = '<center>' +
1344N/A msgMissingAttrMappingValues + '</center>';
1344N/A } else {
1344N/A addPropertyRow(name, assertn);
1344N/A frm.elements['CreateHostedIDP.tfAttrMappingName'].value = '';
1344N/A frm.elements['CreateHostedIDP.tfAttrMappingAssertion'].value = '';
1344N/A }
1344N/A }
1344N/A
1344N/A var runningNumber = 0;
1344N/A
109N/A function addPropertyRow(name, assertn) {
109N/A var table = getActionTable();
109N/A var tBody = table.getElementsByTagName("TBODY").item(0);
109N/A var row = document.createElement("TR");
984N/A var cell1 = document.createElement("TD");
1344N/A var cell2 = document.createElement("TD");
109N/A var cell3 = document.createElement("TD");
1238N/A
109N/A cell1.setAttribute("align", "center");
1344N/A cell1.setAttribute("valign", "top");
1344N/A
1344N/A var cb = document.createElement("input");
1344N/A var textnode1 = document.createTextNode(assertn);
1344N/A var textnode2 = document.createTextNode(name);
1344N/A cb.setAttribute("type", "checkbox");
110N/A cb.setAttribute("value", assertn + "=" + name);
109N/A cell1.appendChild(cb);
109N/A cell2.appendChild(textnode1);
109N/A cell3.appendChild(textnode2);
109N/A cb.onclick = function() {toggleTblButtonState('CreateHostedIDP', 'CreateHostedIDP.tblattrmapping', 'tblButton', 'CreateHostedIDP.deleteAttrMappingBtn', this);};
109N/A row.appendChild(cell1);
109N/A row.appendChild(cell2);
0N/A row.appendChild(cell3);
0N/A tBody.appendChild(row);
0N/A
0N/A }
0N/A
1344N/A function getActionTable() {
1344N/A var nodes = document.getElementsByTagName("table");
1344N/A var len = nodes.length;
1344N/A for (var i = 0; i < len; i++) {
1344N/A if (nodes[i].className == 'Tbl') {
1344N/A return nodes[i];
729N/A }
729N/A }
729N/A }
729N/A
729N/A function deletePropertyRow() {
729N/A var table = getActionTable();
729N/A var rows = table.getElementsByTagName('TR');
729N/A for (var i = rows.length-1; i >=3; --i) {
729N/A var inputs = rows[i].getElementsByTagName('input');
729N/A var cb = inputs[0];
1344N/A if (cb.checked) {
729N/A table.deleteRow(i-1);
729N/A }
729N/A }
729N/A tblBtnCounter['tblButton'] = 0;
0N/A ccSetButtonDisabled('CreateHostedIDP.deleteAttrMappingBtn', 'CreateHostedIDP', true);
0N/A return false;
730N/A }
0N/A
0N/A function signKeySelect(menu) {
0N/A if (menu.value == 'test') {
567N/A document.getElementById('signTest').style.display = '';
662N/A } else {
0N/A document.getElementById('signTest').style.display = 'none';
2086N/A }
2086N/A }
2086N/A
2086N/A function userAttrSelect(menu) {
2086N/A frm.elements['CreateHostedIDP.tfAttrMappingName'].value = menu.value;
2086N/A }
2086N/A
2086N/A frm.elements['CreateHostedIDP.tfMetadataFileURL'].style.display = 'none';
2086N/A frm.elements['CreateHostedIDP.tfExtendedFileURL'].style.display = 'none';
2086N/A getCircleOfTrust('/');
0N/A getActionTable().deleteRow(2);
0N/A
662N/A function unescapeQuote(str) {
1210N/A return str.replace(/&quot;/g, '"');
1210N/A }
1210N/A
1210N/A var infoHasMetaData = unescapeQuote("<cc:text name="txtInfoHasMetaData" defaultValue="configure.provider.help.hasMetaData" bundleID="amConsole" />");
1210N/A var infoRadioMeta = unescapeQuote("<cc:text name="txtInfoRadioMeta" defaultValue="configure.provider.help.metadata" bundleID="amConsole" />");
1210N/A var infoExtendedDataRadio = unescapeQuote("<cc:text name="txtInfoHasMetaData" defaultValue="configure.provider.help.extendeddata" bundleID="amConsole" />");
567N/A var infoRealm = unescapeQuote("<cc:text name="txtInfoRealm" defaultValue="configure.provider.help.realm" bundleID="amConsole" />");
567N/A var infoEntityId = unescapeQuote("<cc:text name="txtInfoEntityId" defaultValue="configure.provider.help.entityId" bundleID="amConsole" />");
567N/A var infoSigningKey = unescapeQuote("<cc:text name="txtInfoSigningKey" defaultValue="configure.provider.help.signing.key" bundleID="amConsole" />");
563N/A var infoMenuUserAttributes = unescapeQuote("<cc:text name="txtInfoMenuUserAttributes" defaultValue="configure.provider.help.user.attributes.choices" bundleID="amConsole" />");
567N/A</script>
712N/A
712N/A</cc:header>
730N/A</jato:useViewBean>
2033N/A