gatein SVN: r2381 - portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design.
by do-not-reply@jboss.org
Author: hangnguyen
Date: 2010-03-29 06:43:10 -0400 (Mon, 29 Mar 2010)
New Revision: 2381
Added:
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design/Test_POR_20_015_CreateUserPageWithExistingGroupPage.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design/Test_POR_20_016_CreateUserPageWithExistingPortalPage.html
Log:
GTNPORTAL-902: Create new test for "POR_20_015"
GTNPORTAL-903: Create new test for "POR_20_016"
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design/Test_POR_20_015_CreateUserPageWithExistingGroupPage.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design/Test_POR_20_015_CreateUserPageWithExistingGroupPage.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design/Test_POR_20_015_CreateUserPageWithExistingGroupPage.html 2010-03-29 10:43:10 UTC (rev 2381)
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>Test_POR_20_015_CreateNewUser'sPageWithExistingGroup'sPage</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test_POR_20_015_CreateNewUser'sPageWithExistingGroup'sPage</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Go to Page Management--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>xpath=//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select Page Mangement on menu item--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new page for group --</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPageBrowser']/div[2]/table/tbody/tr/td/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPageBrowser']/div[2]/table/tbody/tr/td/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>ownerType</td>
+ <td></td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>ownerType</td>
+ <td>label=group</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//option[@value='group']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//option[@value='group']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>ownerId</td>
+ <td>label=/organization/operations</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//option[@value='/organization/operations']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//option[@value='/organization/operations']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>POR_20_015</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>title</td>
+ <td>POR_20_015</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[(a)onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPageForm', 'UIPageTemplateOptions');javascript:eXo.webui.UIForm.submitEvent('UIPageForm','SelectTab','&objectId=UIPageTemplateOptions')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[(a)onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPageForm', 'PermissionSetting');javascript:eXo.webui.UIForm.submitEvent('UIPageForm','SelectTab','&objectId=PermissionSetting')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Access Permission Setting</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Permission Setting</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[(a)onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPageForm', 'UIPageTemplateOptions');javascript:eXo.webui.UIForm.submitEvent('UIPageForm','SelectTab','&objectId=UIPageTemplateOptions')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new page for user--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPageBrowser']/div[2]/table/tbody/tr/td/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPageBrowser']/div[2]/table/tbody/tr/td/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>POR_20_015</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>title</td>
+ <td>POR_20_015</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[(a)onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPageForm', 'UIPageTemplateOptions');javascript:eXo.webui.UIForm.submitEvent('UIPageForm','SelectTab','&objectId=UIPageTemplateOptions')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[(a)onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPageForm', 'UIPageTemplateOptions');javascript:eXo.webui.UIForm.submitEvent('UIPageForm','SelectTab','&objectId=UIPageTemplateOptions')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Search new page created--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>searchTerm</td>
+ <td>POR_20_015</td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>searchOption</td>
+ <td>label=Title</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//form[@id='UIPageSearch']/div[2]/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//form[@id='UIPageSearch']/div[2]/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete page of user--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//img[@title='Delete Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//img[@title='Delete Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertConfirmation</td>
+ <td>Do you want to delete this page?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@class='UIPopupWindow UIDragObject']//div[@class='MiddleLeftSideDecorator']//div[@class='UIPopupMessages']/div[@class='MessageActionBar']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@class='UIPopupWindow UIDragObject']//div[@class='MiddleLeftSideDecorator']//div[@class='UIPopupMessages']/div[@class='MessageActionBar']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete page of group--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//img[@title='Delete Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//img[@title='Delete Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertConfirmation</td>
+ <td>Do you want to delete this page?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@class='UIPopupWindow UIDragObject']//div[@class='MiddleLeftSideDecorator']//div[@class='UIPopupMessages']/div[@class='MessageActionBar']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@class='UIPopupWindow UIDragObject']//div[@class='MiddleLeftSideDecorator']//div[@class='UIPopupMessages']/div[@class='MessageActionBar']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design/Test_POR_20_016_CreateUserPageWithExistingPortalPage.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design/Test_POR_20_016_CreateUserPageWithExistingPortalPage.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/design/Test_POR_20_016_CreateUserPageWithExistingPortalPage.html 2010-03-29 10:43:10 UTC (rev 2381)
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>Test_POR_20_016_CreateNewUser'sPageWithExistingPortal'sPage</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test_POR_20_016_CreateNewUser'sPageWithExistingPortal'sPage</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Go to Page Management--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>xpath=//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select Page Mangement on menu item--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new page for portal--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPageBrowser']/div[2]/table/tbody/tr/td/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPageBrowser']/div[2]/table/tbody/tr/td/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>ownerType</td>
+ <td></td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>ownerType</td>
+ <td>label=portal</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//option[@value='portal']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>POR_20_016</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>title</td>
+ <td>POR_20_016</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@id='UIMaskWorkspace']/div[@class='MiddleLeftDecorator']//div[@class='TabsContainer']/div[2]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@id='UIMaskWorkspace']/div[@class='MiddleLeftDecorator']//div[@class='TabsContainer']/div[2]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@id='UIMaskWorkspace']/div[@class='MiddleLeftDecorator']//div[@class='TabsContainer']/div[3]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@id='UIMaskWorkspace']/div[@class='MiddleLeftDecorator']//div[@class='TabsContainer']/div[3]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new page for user--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPageBrowser']/div[2]/table/tbody/tr/td/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPageBrowser']/div[2]/table/tbody/tr/td/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>POR_20_016</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>title</td>
+ <td>POR_20_016</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[(a)onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPageForm', 'UIPageTemplateOptions');javascript:eXo.webui.UIForm.submitEvent('UIPageForm','SelectTab','&objectId=UIPageTemplateOptions')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[(a)onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPageForm', 'UIPageTemplateOptions');javascript:eXo.webui.UIForm.submitEvent('UIPageForm','SelectTab','&objectId=UIPageTemplateOptions')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Search new page created--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>searchTerm</td>
+ <td>POR_20_016</td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>searchOption</td>
+ <td>label=Title</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//form[@id='UIPageSearch']/div[2]/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//form[@id='UIPageSearch']/div[2]/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete page of user--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//img[@title='Delete Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//img[@title='Delete Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertConfirmation</td>
+ <td>Do you want to delete this page?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@class='UIPopupWindow UIDragObject']//div[@class='MiddleLeftSideDecorator']//div[@class='UIPopupMessages']/div[@class='MessageActionBar']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@class='UIPopupWindow UIDragObject']//div[@class='MiddleLeftSideDecorator']//div[@class='UIPopupMessages']/div[@class='MessageActionBar']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete page of group--</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//img[@title='Delete Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//img[@title='Delete Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertConfirmation</td>
+ <td>Do you want to delete this page?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@class='UIPopupWindow UIDragObject']//div[@class='MiddleLeftSideDecorator']//div[@class='UIPopupMessages']/div[@class='MessageActionBar']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>xpath=//div[@id='UIPortalApplication']/div[@class='UIPopupWindow UIDragObject']//div[@class='MiddleLeftSideDecorator']//div[@class='UIPopupMessages']/div[@class='MessageActionBar']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
14 years, 9 months
gatein SVN: r2380 - portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-03-29 06:40:45 -0400 (Mon, 29 Mar 2010)
New Revision: 2380
Modified:
portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplication.gtmpl
Log:
GTNPORTAL-728: Security issue in portal URL handler
Solved issue when displayed decoded URL in javascript. URL should remain encoded.
Tested locally dashboard and gadget support which seem to use that variable
Modified: portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplication.gtmpl
===================================================================
--- portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplication.gtmpl 2010-03-29 10:40:35 UTC (rev 2379)
+++ portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplication.gtmpl 2010-03-29 10:40:45 UTC (rev 2380)
@@ -62,25 +62,21 @@
<script type="text/javascript" src="<%=docBase%>/javascript/merged.js"></script>
<%}%>
<script type="text/javascript">
- eXo.env.portal.context = '<%=docBase%>' ;
- <%if(rcontext.getAccessPath() == 0) {%>
- eXo.env.portal.accessMode = 'public' ;
- <%} else {%>
- eXo.env.portal.accessMode = 'private' ;
- <%}%>
- eXo.env.portal.portalName = '<%=rcontext.getPortalOwner()%>' ;
- eXo.env.server.context = '<%=docBase%>' ;
- eXo.env.server.portalBaseURL = '<%=rcontext.getURLBuilder().getBaseURL()%>' ;
- eXo.env.client.skin = '$skin' ;
+ eXo.env.portal.context = "<%=docBase%>" ;
+ <%if(rcontext.getAccessPath() == 0) {%>eXo.env.portal.accessMode = "public" ;<%}
+ else
+ {%>eXo.env.portal.accessMode = "private" ;<%}%>
+ eXo.env.portal.portalName = "<%=rcontext.getPortalOwner()%>" ;
+ eXo.env.server.context = "<%=docBase%>" ;
+ eXo.env.server.portalBaseURL = "<%=rcontext.getRequest().getRequestURI()%>" ;
+ eXo.env.client.skin = "$skin" ;
<%
UIPortal portal = uicomponent.findFirstComponentOfType(UIPortal.class);
String sessionAliveLevel = (portal == null ? null : portal.sessionAlive) ;
boolean canKeepState = sessionAliveLevel == null ? false : !sessionAliveLevel.equals(PortalProperties.SESSION_NEVER) ;
%>
-
eXo.portal.portalMode = <%= uicomponent.getModeState() %>;
-
- eXo.session.level = '$sessionAliveLevel';
+ eXo.session.level = "$sessionAliveLevel";
eXo.session.canKeepState = $canKeepState;
eXo.session.isOpen = $uicomponent.isSessionOpen ;
eXo.session.itvTime = ${((PortalRequestContext)rcontext).getRequest().getSession().getMaxInactiveInterval()} ;
14 years, 9 months
gatein SVN: r2379 - portal/trunk/testsuite.
by do-not-reply@jboss.org
Author: hangnguyen
Date: 2010-03-29 06:40:35 -0400 (Mon, 29 Mar 2010)
New Revision: 2379
Modified:
portal/trunk/testsuite/GateIn_v3.0_BasicPortlets_TestDefinition.ods
portal/trunk/testsuite/GateIn_v3.0_MainFucntions_TestDefinition.ods
Log:
Update "GateIn_v3.0_MainFucntions_TestDefinition.ods" and GateIn_v3.0_BasicPortlets_TestDefinition.ods
Modified: portal/trunk/testsuite/GateIn_v3.0_BasicPortlets_TestDefinition.ods
===================================================================
(Binary files differ)
Modified: portal/trunk/testsuite/GateIn_v3.0_MainFucntions_TestDefinition.ods
===================================================================
(Binary files differ)
14 years, 9 months
gatein SVN: r2378 - portal/branches/EPP_5_0_Branch.
by do-not-reply@jboss.org
Author: mpodolin
Date: 2010-03-29 05:17:32 -0400 (Mon, 29 Mar 2010)
New Revision: 2378
Modified:
portal/branches/EPP_5_0_Branch/pom.xml
Log:
JBEPP-261: GTNPORTAL-949 ported to the EPP branch
Modified: portal/branches/EPP_5_0_Branch/pom.xml
===================================================================
--- portal/branches/EPP_5_0_Branch/pom.xml 2010-03-28 22:07:55 UTC (rev 2377)
+++ portal/branches/EPP_5_0_Branch/pom.xml 2010-03-29 09:17:32 UTC (rev 2378)
@@ -46,7 +46,7 @@
<org.gatein.common.version>2.0.0-GA</org.gatein.common.version>
<org.gatein.wci.version>2.0.0-GA</org.gatein.wci.version>
<org.gatein.pc.version>2.1.0-GA</org.gatein.pc.version>
- <org.picketlink.idm>1.1.1.GA</org.picketlink.idm>
+ <org.picketlink.idm>1.1.2.CR01</org.picketlink.idm>
<org.gatein.wsrp.version>1.0.0-GA</org.gatein.wsrp.version>
<org.gatein.mop.version>1.0.0</org.gatein.mop.version>
<org.slf4j.version>1.5.6</org.slf4j.version>
14 years, 9 months
gatein SVN: r2377 - portal/trunk/docs/reference-guide/en/modules.
by do-not-reply@jboss.org
Author: mstruk
Date: 2010-03-28 18:07:55 -0400 (Sun, 28 Mar 2010)
New Revision: 2377
Modified:
portal/trunk/docs/reference-guide/en/modules/SSO.xml
Log:
Reference guide edits - Chapter 3 - SSO
Modified: portal/trunk/docs/reference-guide/en/modules/SSO.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/SSO.xml 2010-03-28 16:47:47 UTC (rev 2376)
+++ portal/trunk/docs/reference-guide/en/modules/SSO.xml 2010-03-28 22:07:55 UTC (rev 2377)
@@ -8,7 +8,7 @@
<section id="sect-Reference_Guide-Single_Sign_On-Overview">
<title>Overview</title>
<para>
- &PRODUCT;, provides some form of Single Sign On (<literal>SSO</literal>) as an integration and aggregation platform.
+ &PRODUCT; provides some form of Single Sign On (<literal>SSO</literal>) as an integration and aggregation platform.
</para>
<para>
When logging into the portal users gain access to many systems through portlets using a single identity. In many cases, however, the portal infrastructure must be integrated with other SSO enabled systems. There are many different Identity Management solutions available. In most cases each SSO framework provides a unique way to plug into a Java EE application.
@@ -19,7 +19,7 @@
In this tutorial, the SSO server is installed in a Tomcat installation. Tomcat can be obtained from <ulink type="http" url="http://tomcat.apache.org">http://tomcat.apache.org</ulink>.
</para>
<para>
- All the packages required for setup can be found in a zip file located at: <filename>http://repository.jboss.org/maven2/org/gatein/sso/sso-packaging</filename>. In this document we will call $SSO_HOME the directory where the file is extracted.
+ All the packages required for setup can be found in a zip file located at: <ulink type="http" url="http://repository.jboss.org/maven2/org/gatein/sso/sso-packaging">http://repository.jboss.org/maven2/org/gatein/sso/sso-packaging</ulink>. In this document we will call the directory where the file is extracted $GATEIN_SSO_HOME.
</para>
<para>
Users are advised to not run any portal extensions that could override the data when manipulating the <filename>gatein.ear</filename> file directly.
@@ -57,10 +57,16 @@
<section id="sect-Reference_Guide-CAS_server-Modifying_CAS_server">
<title>Modifying CAS server</title>
<para>
- To configure the web archive as desired, it is simpler to directly modify the sources.
+ To configure the web archive as desired, the simplest way is to make the necessary changes directly in CAS codebase.
</para>
+ <note>
+ <para>
+ To complete these instructions, and perform the final build step, you will need the Apache Maven 2.
+ You can get it <ulink type="http" url="http://maven.apache.org/download.html">here</ulink>.
+ </para>
+ </note>
<para>
- To change the authentication handler to use the portal authentication handler:
+ First, we need to change the default authentication handler with the one provided by &PRODUCT;.
</para>
<para>
The CAS Server Plugin makes secure authentication callbacks to a RESTful service installed on the remote GateIn server in order to authenticate a user.
@@ -107,7 +113,7 @@
</step>
<step>
<para>
- With the following (Make sure to set the host, port and context with the values corresponding to your portal). Also available in <filename>GATEIN_SSO/cas/plugin/WEB-INF/deployerConfigContext.xml</filename>.
+ With the following (Make sure to set the host, port and context with the values corresponding to your portal). Also available in <filename>GATEIN_SSO_HOME/cas/plugin/WEB-INF/deployerConfigContext.xml</filename>.
</para>
<para>
@@ -149,7 +155,7 @@
</step>
<step>
<para>
- Copy <filename>GATEIN_SSO/cas/plugin/WEB-INF/lib/sso-cas-plugin-<VERSION>.jar</filename> and <filename>GATEIN_SSO/cas/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename> into the <filename>CAS_HOME/cas-server-webapp/src/main/webapp/WEB-INF/lib</filename> created directory.
+ Copy <filename>GATEIN_SSO_HOME/cas/plugin/WEB-INF/lib/sso-cas-plugin-<VERSION>.jar</filename> and <filename>GATEIN_SSO_HOME/cas/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename> into the <filename>CAS_HOME/cas-server-webapp/src/main/webapp/WEB-INF/lib</filename> created directory.
</para>
</step>
<step>
@@ -160,7 +166,8 @@
Change the default port to avoid a conflict with the default &PRODUCT; (for testing purposes). Edit <filename>TOMCAT_HOME/conf/server.xml</filename> and replace the 8080 port to 8888.
<note>
<para>
- If &PRODUCT; is running with Tomcat on the same machine the port 8005 should be changed to something else to avoid port conflicts.
+ If &PRODUCT; is running on the same machine as Tomcat, other ports need to be changed in addition to 8080 in order to avoid port conflicts.
+ They can be changed to any free port. For example, you can change admin port from 8005 to 8805, and AJP port from 8009 to 8809.
</para>
</note>
</para>
@@ -195,7 +202,7 @@
<procedure>
<step>
<para>
- Copy all libraries from <filename>GATEIN_SSO/cas/gatein.ear/lib</filename> into <filename>JBOSS_HOME/server/default/deploy/gatein.ear/lib</filename> (Or in Tomcat, into $<filename>GATEIN_HOME/lib</filename>)
+ Copy all libraries from <filename>GATEIN_SSO_HOME/cas/gatein.ear/lib</filename> into <filename>JBOSS_HOME/server/default/deploy/gatein.ear/lib</filename> (Or in Tomcat, into $<filename>GATEIN_HOME/lib</filename>)
</para>
</step>
<step>
@@ -234,7 +241,7 @@
<procedure>
<step>
<para>
- Access &PRODUCT; (if the CAS server using Tomcat is still running) by going to <ulink type="http" url="http://localhost:8888/cas">http://localhost:8888/cas</ulink>.
+ Start (or restart) &PRODUCT;, and (assuming the CAS server on Tomcat is running) direct your browser to <ulink type="http" url="http://localhost:8888/cas">http://localhost:8888/cas</ulink>.
</para>
</step>
<step>
@@ -308,10 +315,10 @@
<section id="sect-Reference_Guide-Single_Sign_On-JOSSO">
<title>JOSSO</title>
<para>
- This Single Sign On plugin enables seamless integration between &PRODUCT; and the JOSSO Single Sign On Framework. Details about OpenSSO can be found <ulink url="http://www.ja-sig.org/products/cas/">here</ulink>.
+ This Single Sign On plugin enables seamless integration between &PRODUCT; and the JOSSO Single Sign On Framework. Details about JOSSO can be found <ulink url="http://www.josso.org">here</ulink>.
</para>
<para>
- Setting up this integration happens in two distinct actions. The first part is installing or configuring a JOSSO server and the second involves setting up the portal to use the JOSSO server.
+ Setting up this integration involves two steps. The first step is to install or configure a JOSSO server, and the second is to set up the portal to use the JOSSO server.
</para>
<section id="sect-Reference_Guide-JOSSO-JOSSO_server">
<title>JOSSO server</title>
@@ -324,7 +331,7 @@
<section id="sect-Reference_Guide-JOSSO_server-Obtaining_JOSSO">
<title>Obtaining JOSSO</title>
<para>
- JOSSO can be downloaded from <ulink type="http" url="http://sourceforge.net/projects/josso/files/">http://sourceforge.net/projects/josso/files/</ulink>. Use the package that embeds Apache Tomcat.
+ JOSSO can be downloaded from <ulink type="http" url="http://sourceforge.net/projects/josso/files/">http://sourceforge.net/projects/josso/files/</ulink>. Use the package that embeds Apache Tomcat. The integration was tested with JOSSO-1.8.1.
</para>
<para>
Once downloaded, extract the package into what will be called <filename>JOSSO_HOME</filename> in this example.
@@ -336,7 +343,7 @@
<procedure>
<step>
<para>
- Copy the files from <filename>GATEIN_SSO/josso/plugin</filename> into the Tomcat directory (<filename>JOSSO_HOME</filename>).
+ Copy the files from <filename>GATEIN_SSO_HOME/josso/plugin</filename> into the Tomcat directory (<filename>JOSSO_HOME</filename>).
</para>
<para>
This action should replace or add the following files to the <filename>JOSSO_HOME/webapps/josso/WEB-INF/lib</filename> directory:
@@ -370,7 +377,8 @@
<note>
<title>Port Conflicts</title>
<para>
- If &PRODUCT; is being on a machine with Tomcat, other ports will need to be changed to avoid conflicts.
+ If &PRODUCT; is running on the same machine as Tomcat, other ports need to be changed in addition to 8080 in order to avoid port conflicts.
+ They can be changed to any free port. For example, you can change admin port from 8005 to 8805, and AJP port from 8009 to 8809.
</para>
</note>
</para>
@@ -395,9 +403,14 @@
<procedure>
<step>
<para>
- Copy the library files from <filename>GATEIN_SS)/josso/gatein.ear/lib</filename> into <filename>gatein.ear/lib</filename> (Or into <filename>GATEIN_HOME/lib</filename> if &PRODUCT; is running in Tomcat)
+ Copy the library files from <filename>GATEIN_SSO_HOME/josso/gatein.ear/lib</filename> into <filename>gatein.ear/lib</filename> (or into <filename>GATEIN_HOME/lib</filename> if &PRODUCT; is running in Tomcat)
</para>
</step>
+ <step>
+ <para>
+ Copy the file <filename>GATEIN_SSO_HOME/josso/gatein.ear/portal.war/WEB-INF/classes/josso-agent-config.xml</filename> into <filename>gatein.ear/02portal.war/WEB-INF/classes</filename> (or into <filename>GATEIN_HOME/webapps/portal.war/WEB-INF/classes</filename>, or <filename>GATEIN_HOME/conf</filename> if &PRODUCT; is running in Tomcat)
+ </para>
+ </step>
<step>
<itemizedlist>
<listitem>
@@ -433,7 +446,7 @@
<procedure>
<step>
<para>
- Start &PRODUCT; (assuming that the JOSSO server using Tomcat is running) by going to <ulink type="http" url="http://localhost:8888/josso/signon/login.do">http://localhost:8888/josso/signon/login.do</ulink>.
+ Start (or restart) &PRODUCT;, and (assuming the JOSSO server on Tomcat is running) direct your browser to <ulink type="http" url="http://localhost:8888/josso/signon/login.do">http://localhost:8888/josso/signon/login.do</ulink>.
</para>
</step>
<step>
@@ -489,7 +502,7 @@
<servlet-class>org.gatein.sso.agent.GenericSSOAgent</servlet-class>
<init-param>
<param-name>ssoServerUrl</param-name>
- <param-value>http://localhost:8888/cas</param-value>
+ <param-value>http://localhost:8888/josso/signon/login.do</param-value>
</init-param>
</servlet>
</programlisting>
@@ -514,15 +527,15 @@
This Single Sign On plugin enables seamless integration between &PRODUCT; and the OpenSSO Single Sign On Framework. Details about OpenSSO can be found <ulink url="https://opensso.dev.java.net/">here</ulink>.
</para>
<para>
- Setting up this integration happens in two distinct actions. The first part is installing or configuring an OpenSSO server and the second involves setting up the portal to use the OpenSSO server.
+ Setting up this integration involves two steps. The first step is to install or configure an OpenSSO server, and the second is to set up the portal to use the OpenSSO server.
</para>
<section id="sect-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-OpenSSO_server">
<title>OpenSSO server</title>
<para>
- This section details setting up the OpenSSO server to authenticate against the Enterprise Portal Platform login module.
+ This section details the setting up of OpenSSO server to authenticate against the &PRODUCT; login module.
</para>
<para>
- In this example the JOSSO server will be installed on Tomcat.
+ In this example the OpenSSO server will be installed on Tomcat.
</para>
<section id="sect-Reference_Guide-OpenSSO_server-Obtaining_OpenSSO">
<title>Obtaining OpenSSO</title>
@@ -559,7 +572,8 @@
Change the default port to avoid a conflict with the default &PRODUCT; port (for testing purposes). Do this by editing <filename>TOMCAT_HOME/conf/server.xml</filename> and replacing the 8080 port to 8888.
<note>
<para>
- If &PRODUCT; is running on the same machine as Tomcat, the port 8005 will also need to be changed to avoid port conflicts.
+ If &PRODUCT; is running on the same machine as Tomcat, other ports need to be changed in addition to 8080 in order to avoid port conflicts.
+ They can be changed to any free port. For example, you can change admin port from 8005 to 8805, and AJP port from 8009 to 8809.
</para>
</note>
</para>
@@ -593,14 +607,15 @@
</step>
<step>
<para>
- Copy <filename>GATEIN_SSO/opensso/plugin/WEB-INF/lib/sso-opensso-plugin-<VERSION>.jar</filename>, <filename>GATEIN_SSO/opensso/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename>, and <filename>GATEIN_SSO/opensso/plugin/WEB-INF/lib/commons-logging-<VERSION>.jar</filename> into the Tomcat directory at <filename>TOMCAT_HOME/webapps/opensso/WEB-INF/lib</filename>.
+ Copy <filename>GATEIN_SSO_HOME/opensso/plugin/WEB-INF/lib/sso-opensso-plugin-<VERSION>.jar</filename>, <filename>GATEIN_SSO_HOME/opensso/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar</filename>, and <filename>GATEIN_SSO_HOME/opensso/plugin/WEB-INF/lib/commons-logging-<VERSION>.jar</filename> into the Tomcat directory at <filename>TOMCAT_HOME/webapps/opensso/WEB-INF/lib</filename>.
</para>
</step>
<step>
<para>
- Copy <filename>GATEIN_SSO/opensso/plugin/WEB-INF/classes/gatein.properties</filename> into <filename>TOMCAT_HOME/webapps/opensso/WEB-INF/classes</filename>
+ Copy <filename>GATEIN_SSO_HOME/opensso/plugin/WEB-INF/classes/gatein.properties</filename> into <filename>TOMCAT_HOME/webapps/opensso/WEB-INF/classes</filename>
</para>
</step>
+
<step>
<para>
Tomcat should start and be able to access <ulink type="http" url="http://localhost:8888/opensso/UI/Login?realm=gatein">http://localhost:8888/opensso/UI/Login?realm=gatein</ulink>. Login will not be available at this point.
@@ -611,9 +626,54 @@
</imageobject>
</mediaobject>
</step>
- </procedure>
- </section>
+ </procedure>
+ <para>Configure "gatein" realm:</para>
+ <procedure>
+ <step>
+ <para>Direct your browser to <ulink type="http" url="http://localhost:8888/opensso">http://localhost:8888/opensso</ulink></para>
+ </step>
+ <step>
+ <para>Create default configuration</para>
+ </step>
+ <step>
+ <para>Login as <literal>amadmin</literal> and then go to tab "Configuration" -> tab "Authentication" -> link "Core" ->
+ add new value and fill in the class name "org.gatein.sso.opensso.plugin.AuthenticationPlugin".
+ This step is really important. Without it AuthenticationPlugin is not available among other OpenSSO authentication modules.
+ </para>
+ </step>
+ <step>
+ <para>Go to tab "Access control" and create new realm called "gatein".</para>
+ </step>
+ <step>
+ <para>Go to "gatein" realm and click on "Authentication" tab. At the bottom in the section "Authentication chaining" click on "ldapService".
+ Here change the selection from "Datastore", which is the default module in the authentication chain, to "AuthenticationPlugin".
+ This enables authentication of "gatein" realm by using GateIn REST service instead of the OpenSSO LDAP server.</para>
+ </step>
+ <step>
+ <para>
+ Go to "Advanced properties" and change UserProfile from "Required" to "Dynamic". This step is needed
+ because &PRODUCT; users are not in OpenSSO Datastore (LDAP server), so their profiles can't be obtained
+ if "Required" is active. By using "Dynamic" all new users are automatically
+ created in OpenSSO datastore after successful authentication.
+ </para>
+ </step>
+ <step>
+ <para>
+ Increase the user privileges to allow REST access. Go to "Access control" ->
+ Top level realm -> "Privileges" tab -> All authenticated users, and check the last two checkboxes:
+ <itemizedlist>
+ <listitem><para>Read and write access only for policy properties</para></listitem>
+ <listitem><para>Read and write access to all realm and policy properties</para></listitem>
+ </itemizedlist>
+ </para>
+ </step>
+ <step>
+ <para>Do the same for "gatein" realm.</para>
+ </step>
+ </procedure>
+ <para>TODO: The above OpenSSO manual configuration could be replaced by configuration files prepared in advance</para>
+ </section>
</section>
<section id="sect-Reference_Guide-OpenSSO_The_Open_Web_SSO_project-Setup_the_OpenSSO_client">
@@ -621,7 +681,7 @@
<procedure>
<step>
<para>
- Copy all libraries from <filename>GATEIN_SSO/opensso/gatein.ear/lib</filename> into <filename>JBOSS_HOME/server/default/deploy/gatein.ear/lib</filename> (Or, in Tomcat, into <filename>GATEIN_HOME/lib</filename>)
+ Copy all libraries from <filename>GATEIN_SSO_HOME/opensso/gatein.ear/lib</filename> into <filename>JBOSS_HOME/server/default/deploy/gatein.ear/lib</filename> (Or, in Tomcat, into <filename>GATEIN_HOME/lib</filename>)
</para>
</step>
<step>
14 years, 9 months
gatein SVN: r2376 - components/sso/trunk/spengo.
by do-not-reply@jboss.org
Author: sohil.shah(a)jboss.com
Date: 2010-03-28 12:47:47 -0400 (Sun, 28 Mar 2010)
New Revision: 2376
Modified:
components/sso/trunk/spengo/
Log:
svn:ignore
Property changes on: components/sso/trunk/spengo
___________________________________________________________________
Name: svn:ignore
+ target
14 years, 9 months
gatein SVN: r2375 - in components/sso/trunk: agent/src/main/java/org/gatein/sso/agent/login and 8 other directories.
by do-not-reply@jboss.org
Author: sohil.shah(a)jboss.com
Date: 2010-03-28 12:47:01 -0400 (Sun, 28 Mar 2010)
New Revision: 2375
Added:
components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGORolesModule.java
components/sso/trunk/spengo/
components/sso/trunk/spnego/
components/sso/trunk/spnego/pom.xml
components/sso/trunk/spnego/src/
components/sso/trunk/spnego/src/main/
components/sso/trunk/spnego/src/main/java/
components/sso/trunk/spnego/src/main/java/org/
components/sso/trunk/spnego/src/main/java/org/gatein/
components/sso/trunk/spnego/src/main/java/org/gatein/sso/
components/sso/trunk/spnego/src/main/java/org/gatein/sso/spnego/
components/sso/trunk/spnego/src/main/java/org/gatein/sso/spnego/SPNEGOLoginModule.java
Removed:
components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java
Modified:
components/sso/trunk/.classpath
components/sso/trunk/pom.xml
Log:
Kerberos Support via SPNEGO protocol
Modified: components/sso/trunk/.classpath
===================================================================
--- components/sso/trunk/.classpath 2010-03-28 10:05:19 UTC (rev 2374)
+++ components/sso/trunk/.classpath 2010-03-28 16:47:01 UTC (rev 2375)
@@ -17,6 +17,7 @@
<classpathentry kind="src" output="josso/gatein-josso-plugin/target/classes" path="josso/gatein-josso-plugin/src/main/java"/>
<classpathentry kind="src" output="opensso/gatein-opensso-plugin/target/classes" path="opensso/gatein-opensso-plugin/src/main/java"/>
<classpathentry excluding="**" kind="src" output="opensso/gatein-opensso-portal/target/classes" path="opensso/gatein-opensso-portal/src/main/resources"/>
+ <classpathentry kind="src" output="spengo/target/classes" path="spnego/src/main/java"/>
<classpathentry excluding="**" kind="src" output="packaging/target/classes" path="packaging/src/main/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
Deleted: components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java
===================================================================
--- components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java 2010-03-28 10:05:19 UTC (rev 2374)
+++ components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java 2010-03-28 16:47:01 UTC (rev 2375)
@@ -1,473 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- *
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.gatein.sso.agent.login;
-
-import java.security.Principal;
-import java.security.PrivilegedAction;
-import java.security.acl.Group;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.security.auth.Subject;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.login.LoginContext;
-import javax.security.auth.login.LoginException;
-
-import org.ietf.jgss.GSSContext;
-import org.ietf.jgss.GSSCredential;
-import org.ietf.jgss.GSSException;
-import org.ietf.jgss.GSSManager;
-import org.ietf.jgss.Oid;
-import org.jboss.security.SimpleGroup;
-import org.jboss.security.auth.spi.AbstractServerLoginModule;
-import org.jboss.security.negotiation.NegotiationMessage;
-import org.jboss.security.negotiation.common.NegotiationContext;
-import org.jboss.security.negotiation.spnego.encoding.NegTokenInit;
-import org.jboss.security.negotiation.spnego.encoding.NegTokenTarg;
-import org.jboss.security.negotiation.spnego.encoding.SPNEGOMessage;
-
-import org.exoplatform.container.ExoContainer;
-import org.exoplatform.container.ExoContainerContext;
-import org.exoplatform.container.PortalContainer;
-import org.exoplatform.container.RootContainer;
-import org.exoplatform.services.security.Identity;
-import org.exoplatform.services.security.Authenticator;
-import org.exoplatform.services.security.IdentityRegistry;
-import org.exoplatform.services.security.jaas.UserPrincipal;
-
-/**
- * Login module to work in conjunction with SPNEGOAuthenticator to handle the
- * authentication requirements.
- *
- * @author darran.lofthouse(a)jboss.com
- * @version $Revision: 83572 $
- */
-public class SPNEGOLoginModule extends AbstractServerLoginModule
-{
-
- private static final String SPNEGO = "SPNEGO";
-
- private static final Oid kerberos;
-
- // TODO - Pick a name for a default domain?
- private String serverSecurityDomain;
-
- private LoginContext serverLoginContext = null;
-
- private Principal identity = null;
-
- // GateIn integration
- private static final String OPTION_PORTAL_CONTAINER_NAME = "portalContainerName";
- private static final String OPTION_REALM_NAME = "realmName";
- private String portalContainerName;
- private String realmName;
-
- static
- {
- try
- {
- kerberos = new Oid("1.2.840.113554.1.2.2");
- }
- catch (GSSException e)
- {
- throw new RuntimeException("Unable to initialise Oid", e);
- }
- }
-
- @Override
- public void initialize(final Subject subject,
- final CallbackHandler callbackHandler, final Map sharedState,
- final Map options)
- {
- super.initialize(subject, callbackHandler, sharedState, options);
-
- // Which security domain to authenticate the server.
- serverSecurityDomain = (String) options.get("serverSecurityDomain");
- log.debug("serverSecurityDomain=" + serverSecurityDomain);
-
- // GateIn integration
- this.portalContainerName = getPortalContainerName(options);
- this.realmName = getRealmName(options);
- }
-
- @Override
- public boolean login() throws LoginException
- {
- if (super.login() == true)
- {
- log.debug("super.login()==true");
- return true;
- }
-
- super.loginOk = false;
-
- NegotiationContext negotiationContext = NegotiationContext
- .getCurrentNegotiationContext();
- NegotiationMessage requestMessage = negotiationContext.getRequestMessage();
- if (requestMessage instanceof SPNEGOMessage == false)
- {
- String message = "Unsupported negotiation mechanism '"
- + requestMessage.getMessageType() + "'.";
- log.warn(message);
- throw new LoginException(message);
- }
-
- try
- {
- Subject server = getServerSubject();
- AcceptSecContext action = new AcceptSecContext(negotiationContext);
- Object result = Subject.doAs(server, action);
-
- log.trace("Result - " + result);
-
- if (result instanceof Boolean)
- {
- if (Boolean.TRUE.equals(result))
- {
- super.loginOk = true;
- if (getUseFirstPass() == true)
- {
- String userName = identity.getName();
- log.debug("Storing username '" + userName + "' and empty password");
- // Add the username and a null password to the shared state map
- sharedState.put("javax.security.auth.login.name", identity);
- sharedState.put("javax.security.auth.login.password", "");
- }
- }
- }
- else if (result instanceof Exception)
- {
- Exception e = (Exception) result;
- log.error("Unable to authenticate", e);
- throw new LoginException("Unable to authenticate - " + e.getMessage());
- }
-
- }
- finally
- {
- if (serverLoginContext != null)
- {
- // TODO - We may not actually want to logout as if we use cache this may
- // clear it,
- serverLoginContext.logout();
- }
- }
-
- log.trace("super.loginOk " + super.loginOk);
- if (super.loginOk == true)
- {
- return true;
- }
- else
- {
- throw new LoginException("Continuation Required.");
- }
-
- }
-
- @Override
- protected Principal getIdentity()
- {
- return identity;
- }
-
- @Override
- protected Group[] getRoleSets() throws LoginException
- {
- try
- {
- Authenticator authenticator = (Authenticator) getContainer()
- .getComponentInstanceOfType(Authenticator.class);
-
- String username = this.getIdentity().getName();
- Identity identity = authenticator.createIdentity(username);
-
- Group roles = new SimpleGroup("Roles");
- Group callerPrincipal = new SimpleGroup("CallerPrincipal");
- for (String role : identity.getRoles())
- {
- roles.addMember(this.createIdentity(role));
- }
-
- Group[] groups = { roles, callerPrincipal };
- callerPrincipal.addMember(getIdentity());
-
- return groups;
- }
- catch(Exception e)
- {
- throw new LoginException(e.getMessage());
- }
- }
-
- @Override
- public boolean commit() throws LoginException
- {
- if (super.commit())
- {
- try
- {
- Authenticator authenticator = (Authenticator) getContainer()
- .getComponentInstanceOfType(Authenticator.class);
-
- IdentityRegistry identityRegistry =
- (IdentityRegistry)getContainer().getComponentInstanceOfType(IdentityRegistry.class);
-
- //TODO: Add check for single check
-
- String username = this.getIdentity().getName();
- Identity identity = authenticator.createIdentity(username);
- identity.setSubject(this.subject);
- identityRegistry.register(identity);
-
- return true;
- }
- catch (Exception e)
- {
- throw new LoginException(e.getMessage());
- }
- }
- else
- {
- return false;
- }
- }
-
- protected Subject getServerSubject() throws LoginException
- {
- LoginContext lc = new LoginContext(serverSecurityDomain);
- lc.login();
- // Cache so we can log out.
- serverLoginContext = lc;
-
- Subject serverSubject = serverLoginContext.getSubject();
- log.debug("Subject = " + serverSubject);
- log.debug("Logged in '" + serverSecurityDomain + "' LoginContext");
-
- return serverSubject;
- }
-
- private class AcceptSecContext implements PrivilegedAction
- {
-
- private final NegotiationContext negotiationContext;
-
- public AcceptSecContext(final NegotiationContext negotiationContext)
- {
- this.negotiationContext = negotiationContext;
- }
-
- public Object run()
- {
- try
- {
- // The message type will have already been checked before this point so
- // we know it is
- // a SPNEGO message.
- NegotiationMessage requestMessage = negotiationContext
- .getRequestMessage();
-
- // TODO - Ensure no way to fall through with gssToken still null.
- byte[] gssToken = null;
- if (requestMessage instanceof NegTokenInit)
- {
- NegTokenInit negTokenInit = (NegTokenInit) requestMessage;
- List<Oid> mechList = negTokenInit.getMechTypes();
-
- if (mechList.get(0).equals(kerberos))
- {
- gssToken = negTokenInit.getMechToken();
- }
- else
- {
- boolean kerberosSupported = false;
-
- Iterator<Oid> it = mechList.iterator();
- while (it.hasNext() && kerberosSupported == false)
- {
- kerberosSupported = it.next().equals(kerberos);
- }
-
- NegTokenTarg negTokenTarg = new NegTokenTarg();
-
- if (kerberosSupported)
- {
- negTokenTarg.setNegResult(NegTokenTarg.ACCEPT_INCOMPLETE);
- negTokenTarg.setSupportedMech(kerberos);
- }
- else
- {
- negTokenTarg.setNegResult(NegTokenTarg.REJECTED);
- }
- negotiationContext.setResponseMessage(negTokenTarg);
-
- return Boolean.FALSE;
- }
-
- }
- else if (requestMessage instanceof NegTokenTarg)
- {
- NegTokenTarg negTokenTarg = (NegTokenTarg) requestMessage;
-
- gssToken = negTokenTarg.getResponseToken();
- }
-
- Object schemeContext = negotiationContext.getSchemeContext();
- if (schemeContext != null
- && schemeContext instanceof GSSContext == false)
- {
- throw new IllegalStateException(
- "The schemeContext is not a GSSContext");
- }
-
- GSSContext gssContext = (GSSContext) schemeContext;
- if (gssContext == null)
- {
- log.debug("Creating new GSSContext.");
- GSSManager manager = GSSManager.getInstance();
- gssContext = manager.createContext((GSSCredential) null);
-
- negotiationContext.setSchemeContext(gssContext);
- }
-
- if (gssContext.isEstablished())
- {
- log
- .warn("Authentication was performed despite already being authenticated!");
-
- // TODO - Refactor to only do this once.
- // identity = new
- // KerberosPrincipal(gssContext.getSrcName().toString());
- identity = new UserPrincipal(mapSpnegoToGateIn(gssContext.getSrcName()
- .toString()));
-
- log.debug("context.getCredDelegState() = "
- + gssContext.getCredDelegState());
- log.debug("context.getMutualAuthState() = "
- + gssContext.getMutualAuthState());
- log.debug("context.getSrcName() = "
- + gssContext.getSrcName().toString());
-
- negotiationContext.setAuthenticationMethod(SPNEGO);
- negotiationContext.setAuthenticated(true);
-
- return Boolean.TRUE;
- }
-
- byte[] respToken = gssContext.acceptSecContext(gssToken, 0,
- gssToken.length);
-
- if (respToken != null)
- {
- NegTokenTarg negTokenTarg = new NegTokenTarg();
- negTokenTarg.setResponseToken(respToken);
-
- negotiationContext.setResponseMessage(negTokenTarg);
- }
-
- if (gssContext.isEstablished() == false)
- {
- return Boolean.FALSE;
- }
- else
- {
- // identity = new
- // KerberosPrincipal(gssContext.getSrcName().toString());
- identity = new UserPrincipal(mapSpnegoToGateIn(gssContext.getSrcName()
- .toString()));
-
- log.debug("context.getCredDelegState() = "
- + gssContext.getCredDelegState());
- log.debug("context.getMutualAuthState() = "
- + gssContext.getMutualAuthState());
- log.debug("context.getSrcName() = "
- + gssContext.getSrcName().toString());
-
- // TODO - Get these two in synch - maybe isAuthenticated based on an
- // authentication method been set?
- negotiationContext.setAuthenticationMethod(SPNEGO);
- negotiationContext.setAuthenticated(true);
- return Boolean.TRUE;
- }
-
- }
- catch (Exception e)
- {
- return e;
- }
-
- }
- }
-
- private String mapSpnegoToGateIn(String spnegoPrincipal)
- {
- String exoPrincipal = spnegoPrincipal;
-
- int indexOf = exoPrincipal.indexOf('@');
- if (indexOf != -1)
- {
- exoPrincipal = exoPrincipal.substring(0, indexOf).trim();
- }
-
- return exoPrincipal;
- }
-
- private String getPortalContainerName(Map options)
- {
- if (options != null)
- {
- String optionValue = (String) options.get(OPTION_PORTAL_CONTAINER_NAME);
- if (optionValue != null && optionValue.length() > 0)
- {
- return optionValue;
- }
- }
- return PortalContainer.DEFAULT_PORTAL_CONTAINER_NAME;
- }
-
- private String getRealmName(Map options)
- {
- if (options != null)
- {
- String optionValue = (String) options.get(OPTION_REALM_NAME);
- if (optionValue != null && optionValue.length() > 0)
- {
- return optionValue;
- }
- }
- return PortalContainer.DEFAULT_REALM_NAME;
- }
-
- private ExoContainer getContainer() throws Exception
- {
- // TODO set correct current container
- ExoContainer container = ExoContainerContext.getCurrentContainer();
- if (container instanceof RootContainer)
- {
- container = RootContainer.getInstance().getPortalContainer(
- portalContainerName);
- }
- return container;
- }
-}
Copied: components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGORolesModule.java (from rev 2374, components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java)
===================================================================
--- components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGORolesModule.java (rev 0)
+++ components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGORolesModule.java 2010-03-28 16:47:01 UTC (rev 2375)
@@ -0,0 +1,196 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ *
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.gatein.sso.agent.login;
+
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginException;
+
+import org.jboss.security.SimpleGroup;
+import org.jboss.security.auth.spi.AbstractServerLoginModule;
+
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.container.RootContainer;
+import org.exoplatform.services.security.Identity;
+import org.exoplatform.services.security.Authenticator;
+import org.exoplatform.services.security.IdentityRegistry;
+
+/**
+ * Login module to work in conjunction with SPNEGOAuthenticator to handle the
+ * authentication requirements.
+ *
+ * @author darran.lofthouse(a)jboss.com
+ * @version $Revision: 83572 $
+ */
+public class SPNEGORolesModule extends AbstractServerLoginModule
+{
+ private Identity identity = null;
+
+ // GateIn integration
+ private static final String OPTION_PORTAL_CONTAINER_NAME = "portalContainerName";
+ private static final String OPTION_REALM_NAME = "realmName";
+ private String portalContainerName;
+ private String realmName;
+
+ private String getPortalContainerName(Map options)
+ {
+ if (options != null)
+ {
+ String optionValue = (String) options.get(OPTION_PORTAL_CONTAINER_NAME);
+ if (optionValue != null && optionValue.length() > 0)
+ {
+ return optionValue;
+ }
+ }
+ return PortalContainer.DEFAULT_PORTAL_CONTAINER_NAME;
+ }
+
+ private String getRealmName(Map options)
+ {
+ if (options != null)
+ {
+ String optionValue = (String) options.get(OPTION_REALM_NAME);
+ if (optionValue != null && optionValue.length() > 0)
+ {
+ return optionValue;
+ }
+ }
+ return PortalContainer.DEFAULT_REALM_NAME;
+ }
+
+ private ExoContainer getContainer() throws Exception
+ {
+ // TODO set correct current container
+ ExoContainer container = ExoContainerContext.getCurrentContainer();
+ if (container instanceof RootContainer)
+ {
+ container = RootContainer.getInstance().getPortalContainer(
+ portalContainerName);
+ }
+ return container;
+ }
+
+ @Override
+ public void initialize(final Subject subject,
+ final CallbackHandler callbackHandler, final Map sharedState,
+ final Map options)
+ {
+ super.initialize(subject, callbackHandler, sharedState, options);
+
+ // GateIn integration
+ this.portalContainerName = getPortalContainerName(options);
+ this.realmName = getRealmName(options);
+ }
+
+ @Override
+ public boolean login() throws LoginException
+ {
+ try
+ {
+ if (super.login())
+ {
+ Principal principal = this.getIdentity();
+ Authenticator authenticator = (Authenticator) getContainer()
+ .getComponentInstanceOfType(Authenticator.class);
+
+ this.identity = authenticator.createIdentity(principal.getName());
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ catch (Exception e)
+ {
+ throw new LoginException(e.getMessage());
+ }
+ }
+
+ @Override
+ protected Principal getIdentity()
+ {
+ return (Principal) sharedState.get("javax.security.auth.login.name");
+ }
+
+ @Override
+ protected Group[] getRoleSets() throws LoginException
+ {
+ try
+ {
+ Group roles = new SimpleGroup("Roles");
+ for (String role : this.identity.getRoles())
+ {
+ roles.addMember(this.createIdentity(role));
+ }
+
+ Group[] groups = { roles };
+
+ return groups;
+ }
+ catch (Exception e)
+ {
+ throw new LoginException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean commit() throws LoginException
+ {
+ try
+ {
+ if (super.commit())
+ {
+ IdentityRegistry identityRegistry = (IdentityRegistry) getContainer()
+ .getComponentInstanceOfType(IdentityRegistry.class);
+
+ // TODO: Add check for single check
+ if(identityRegistry.getIdentity(this.identity.getUserId()) != null)
+ {
+ //already logged in
+ return true;
+ }
+
+ this.identity.setSubject(this.subject);
+ identityRegistry.register(this.identity);
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ catch (Exception e)
+ {
+ throw new LoginException(e.getMessage());
+ }
+ }
+}
Modified: components/sso/trunk/pom.xml
===================================================================
--- components/sso/trunk/pom.xml 2010-03-28 10:05:19 UTC (rev 2374)
+++ components/sso/trunk/pom.xml 2010-03-28 16:47:01 UTC (rev 2375)
@@ -40,6 +40,7 @@
OpenSSO requires manual installation
-->
<module>opensso</module>
+ <module>spnego</module>
<module>packaging</module>
</modules>
Added: components/sso/trunk/spnego/pom.xml
===================================================================
--- components/sso/trunk/spnego/pom.xml (rev 0)
+++ components/sso/trunk/spnego/pom.xml 2010-03-28 16:47:01 UTC (rev 2375)
@@ -0,0 +1,89 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.gatein.sso</groupId>
+ <artifactId>sso-parent</artifactId>
+ <relativePath>../pom.xml</relativePath>
+ <version>1.0.0-Beta03-SNAPSHOT</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>spnego</artifactId>
+ <packaging>jar</packaging>
+ <name>GateIn SPNEGO LoginModule based on JBoss Negotiation</name>
+
+ <properties>
+ <!-- ChangeMe to your specific local environment -->
+ <gatein.location>/home/soshah/projects/gatein/runtime/jboss/server/default</gatein.location>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.exoplatform.core</groupId>
+ <artifactId>exo.core.component.organization.api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.security</groupId>
+ <artifactId>jboss-negotiation-spnego</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ </build>
+
+
+ <!--
+ profile for packaging and deploying this plugin into a cas server
+ -->
+ <profiles>
+ <profile>
+ <id>integration-tests</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.3.1</version>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <!--
+ Note: This profile is used only during Development for deploying artifacts into a Development Gatein server
+ -->
+ <profile>
+ <id>dev</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>dev</id>
+ <phase>install</phase>
+ <configuration>
+ <tasks>
+ <echo message="Deploying the Gatein SPNEGO Login Module" />
+
+ <copy
+ file="${settings.localRepository}/org/gatein/sso/spnego/${project.version}/${project.artifactId}-${project.version}.jar"
+ todir="${gatein.location}/lib" overwrite="true" />
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
+
Added: components/sso/trunk/spnego/src/main/java/org/gatein/sso/spnego/SPNEGOLoginModule.java
===================================================================
--- components/sso/trunk/spnego/src/main/java/org/gatein/sso/spnego/SPNEGOLoginModule.java (rev 0)
+++ components/sso/trunk/spnego/src/main/java/org/gatein/sso/spnego/SPNEGOLoginModule.java 2010-03-28 16:47:01 UTC (rev 2375)
@@ -0,0 +1,367 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ *
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.gatein.sso.spnego;
+
+import java.security.Principal;
+import java.security.PrivilegedAction;
+import java.security.acl.Group;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginContext;
+import javax.security.auth.login.LoginException;
+
+import org.ietf.jgss.GSSContext;
+import org.ietf.jgss.GSSCredential;
+import org.ietf.jgss.GSSException;
+import org.ietf.jgss.GSSManager;
+import org.ietf.jgss.Oid;
+import org.jboss.security.SimpleGroup;
+import org.jboss.security.auth.spi.AbstractServerLoginModule;
+import org.jboss.security.negotiation.NegotiationMessage;
+import org.jboss.security.negotiation.common.NegotiationContext;
+import org.jboss.security.negotiation.spnego.encoding.NegTokenInit;
+import org.jboss.security.negotiation.spnego.encoding.NegTokenTarg;
+import org.jboss.security.negotiation.spnego.encoding.SPNEGOMessage;
+
+import org.exoplatform.services.security.jaas.UserPrincipal;
+
+/**
+ * Login module to work in conjunction with SPNEGOAuthenticator to handle the
+ * authentication requirements.
+ *
+ * @author darran.lofthouse(a)jboss.com
+ * @version $Revision: 83572 $
+ */
+public class SPNEGOLoginModule extends AbstractServerLoginModule
+{
+
+ private static final String SPNEGO = "SPNEGO";
+
+ private static final Oid kerberos;
+
+ // TODO - Pick a name for a default domain?
+ private String serverSecurityDomain;
+
+ private LoginContext serverLoginContext = null;
+
+ private Principal identity = null;
+
+
+ static
+ {
+ try
+ {
+ kerberos = new Oid("1.2.840.113554.1.2.2");
+ }
+ catch (GSSException e)
+ {
+ throw new RuntimeException("Unable to initialise Oid", e);
+ }
+ }
+
+ @Override
+ public void initialize(final Subject subject,
+ final CallbackHandler callbackHandler, final Map sharedState,
+ final Map options)
+ {
+ super.initialize(subject, callbackHandler, sharedState, options);
+
+ // Which security domain to authenticate the server.
+ serverSecurityDomain = (String) options.get("serverSecurityDomain");
+ log.debug("serverSecurityDomain=" + serverSecurityDomain);
+ }
+
+ @Override
+ public boolean login() throws LoginException
+ {
+ if (super.login() == true)
+ {
+ log.debug("super.login()==true");
+ return true;
+ }
+
+ super.loginOk = false;
+
+ NegotiationContext negotiationContext = NegotiationContext
+ .getCurrentNegotiationContext();
+ NegotiationMessage requestMessage = negotiationContext.getRequestMessage();
+ if (requestMessage instanceof SPNEGOMessage == false)
+ {
+ String message = "Unsupported negotiation mechanism '"
+ + requestMessage.getMessageType() + "'.";
+ log.warn(message);
+ throw new LoginException(message);
+ }
+
+ try
+ {
+ Subject server = getServerSubject();
+ AcceptSecContext action = new AcceptSecContext(negotiationContext);
+ Object result = Subject.doAs(server, action);
+
+ log.trace("Result - " + result);
+
+ if (result instanceof Boolean)
+ {
+ if (Boolean.TRUE.equals(result))
+ {
+ super.loginOk = true;
+ if (getUseFirstPass() == true)
+ {
+ String userName = identity.getName();
+ log.debug("Storing username '" + userName + "' and empty password");
+ // Add the username and a null password to the shared state map
+ sharedState.put("javax.security.auth.login.name", identity);
+ sharedState.put("javax.security.auth.login.password", "");
+ }
+ }
+ }
+ else if (result instanceof Exception)
+ {
+ Exception e = (Exception) result;
+ log.error("Unable to authenticate", e);
+ throw new LoginException("Unable to authenticate - " + e.getMessage());
+ }
+
+ }
+ finally
+ {
+ if (serverLoginContext != null)
+ {
+ // TODO - We may not actually want to logout as if we use cache this may
+ // clear it,
+ serverLoginContext.logout();
+ }
+ }
+
+ log.trace("super.loginOk " + super.loginOk);
+ if (super.loginOk == true)
+ {
+ return true;
+ }
+ else
+ {
+ throw new LoginException("Continuation Required.");
+ }
+
+ }
+
+ @Override
+ protected Principal getIdentity()
+ {
+ return identity;
+ }
+
+ @Override
+ protected Group[] getRoleSets() throws LoginException
+ {
+ Group roles = new SimpleGroup("Roles");
+ Group callerPrincipal = new SimpleGroup("CallerPrincipal");
+ Group[] groups = { roles, callerPrincipal };
+ callerPrincipal.addMember(getIdentity());
+ return groups;
+ }
+
+ protected Subject getServerSubject() throws LoginException
+ {
+ LoginContext lc = new LoginContext(serverSecurityDomain);
+ lc.login();
+ // Cache so we can log out.
+ serverLoginContext = lc;
+
+ Subject serverSubject = serverLoginContext.getSubject();
+ log.debug("Subject = " + serverSubject);
+ log.debug("Logged in '" + serverSecurityDomain + "' LoginContext");
+
+ return serverSubject;
+ }
+
+ private class AcceptSecContext implements PrivilegedAction
+ {
+
+ private final NegotiationContext negotiationContext;
+
+ public AcceptSecContext(final NegotiationContext negotiationContext)
+ {
+ this.negotiationContext = negotiationContext;
+ }
+
+ public Object run()
+ {
+ try
+ {
+ // The message type will have already been checked before this point so
+ // we know it is
+ // a SPNEGO message.
+ NegotiationMessage requestMessage = negotiationContext
+ .getRequestMessage();
+
+ // TODO - Ensure no way to fall through with gssToken still null.
+ byte[] gssToken = null;
+ if (requestMessage instanceof NegTokenInit)
+ {
+ NegTokenInit negTokenInit = (NegTokenInit) requestMessage;
+ List<Oid> mechList = negTokenInit.getMechTypes();
+
+ if (mechList.get(0).equals(kerberos))
+ {
+ gssToken = negTokenInit.getMechToken();
+ }
+ else
+ {
+ boolean kerberosSupported = false;
+
+ Iterator<Oid> it = mechList.iterator();
+ while (it.hasNext() && kerberosSupported == false)
+ {
+ kerberosSupported = it.next().equals(kerberos);
+ }
+
+ NegTokenTarg negTokenTarg = new NegTokenTarg();
+
+ if (kerberosSupported)
+ {
+ negTokenTarg.setNegResult(NegTokenTarg.ACCEPT_INCOMPLETE);
+ negTokenTarg.setSupportedMech(kerberos);
+ }
+ else
+ {
+ negTokenTarg.setNegResult(NegTokenTarg.REJECTED);
+ }
+ negotiationContext.setResponseMessage(negTokenTarg);
+
+ return Boolean.FALSE;
+ }
+
+ }
+ else if (requestMessage instanceof NegTokenTarg)
+ {
+ NegTokenTarg negTokenTarg = (NegTokenTarg) requestMessage;
+
+ gssToken = negTokenTarg.getResponseToken();
+ }
+
+ Object schemeContext = negotiationContext.getSchemeContext();
+ if (schemeContext != null
+ && schemeContext instanceof GSSContext == false)
+ {
+ throw new IllegalStateException(
+ "The schemeContext is not a GSSContext");
+ }
+
+ GSSContext gssContext = (GSSContext) schemeContext;
+ if (gssContext == null)
+ {
+ log.debug("Creating new GSSContext.");
+ GSSManager manager = GSSManager.getInstance();
+ gssContext = manager.createContext((GSSCredential) null);
+
+ negotiationContext.setSchemeContext(gssContext);
+ }
+
+ if (gssContext.isEstablished())
+ {
+ log
+ .warn("Authentication was performed despite already being authenticated!");
+
+ // TODO - Refactor to only do this once.
+ // identity = new
+ // KerberosPrincipal(gssContext.getSrcName().toString());
+ identity = new UserPrincipal(mapSpnegoToGateIn(gssContext
+ .getSrcName().toString()));
+
+ log.debug("context.getCredDelegState() = "
+ + gssContext.getCredDelegState());
+ log.debug("context.getMutualAuthState() = "
+ + gssContext.getMutualAuthState());
+ log.debug("context.getSrcName() = "
+ + gssContext.getSrcName().toString());
+
+ negotiationContext.setAuthenticationMethod(SPNEGO);
+ negotiationContext.setAuthenticated(true);
+
+ return Boolean.TRUE;
+ }
+
+ byte[] respToken = gssContext.acceptSecContext(gssToken, 0,
+ gssToken.length);
+
+ if (respToken != null)
+ {
+ NegTokenTarg negTokenTarg = new NegTokenTarg();
+ negTokenTarg.setResponseToken(respToken);
+
+ negotiationContext.setResponseMessage(negTokenTarg);
+ }
+
+ if (gssContext.isEstablished() == false)
+ {
+ return Boolean.FALSE;
+ }
+ else
+ {
+ // identity = new
+ // KerberosPrincipal(gssContext.getSrcName().toString());
+ identity = new UserPrincipal(mapSpnegoToGateIn(gssContext
+ .getSrcName().toString()));
+
+ log.debug("context.getCredDelegState() = "
+ + gssContext.getCredDelegState());
+ log.debug("context.getMutualAuthState() = "
+ + gssContext.getMutualAuthState());
+ log.debug("context.getSrcName() = "
+ + gssContext.getSrcName().toString());
+
+ // TODO - Get these two in synch - maybe isAuthenticated based on an
+ // authentication method been set?
+ negotiationContext.setAuthenticationMethod(SPNEGO);
+ negotiationContext.setAuthenticated(true);
+ return Boolean.TRUE;
+ }
+
+ }
+ catch (Exception e)
+ {
+ return e;
+ }
+
+ }
+ }
+
+ private String mapSpnegoToGateIn(String spnegoPrincipal)
+ {
+ String exoPrincipal = spnegoPrincipal;
+
+ int indexOf = exoPrincipal.indexOf('@');
+ if (indexOf != -1)
+ {
+ exoPrincipal = exoPrincipal.substring(0, indexOf).trim();
+ }
+
+ return exoPrincipal;
+ }
+}
14 years, 9 months
gatein SVN: r2374 - in components/sso/trunk: agent and 1 other directories.
by do-not-reply@jboss.org
Author: sohil.shah(a)jboss.com
Date: 2010-03-28 06:05:19 -0400 (Sun, 28 Mar 2010)
New Revision: 2374
Added:
components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java
Modified:
components/sso/trunk/agent/pom.xml
components/sso/trunk/pom.xml
Log:
Kerberos Support via SPNEGO protocol
Modified: components/sso/trunk/agent/pom.xml
===================================================================
--- components/sso/trunk/agent/pom.xml 2010-03-26 23:21:58 UTC (rev 2373)
+++ components/sso/trunk/agent/pom.xml 2010-03-28 10:05:19 UTC (rev 2374)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.gatein.sso</groupId>
<artifactId>sso-parent</artifactId>
@@ -62,6 +63,11 @@
<groupId>org.josso</groupId>
<artifactId>josso-protocol-client</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.jboss.security</groupId>
+ <artifactId>jboss-negotiation-spnego</artifactId>
+ </dependency>
</dependencies>
<build>
@@ -114,37 +120,37 @@
</profile>
<!--
- TODO: move this into packaging module
- -->
- <!--
- <profile> <id>josso-agent</id> <build> <plugins> <plugin>
- <groupId>org.jvnet.maven-antrun-extended-plugin</groupId>
- <artifactId>maven-antrun-extended-plugin</artifactId> <executions>
- <execution> <id>josso-agent-package</id> <phase>package</phase>
- <configuration> <tasks> <echo message="Preparing the JOSSO Agent for GateIn" /> <delete dir="${basedir}/target/josso" /> <mkdir dir="${basedir}/target/josso" /> <unjar src="${settings.localRepository}/org/exoplatform/portal/exo.portal.web.portal/${org.exoplatform.portal.version}/exo.portal.web.portal-${org.exoplatform.portal.version}.war" dest="${basedir}/target/josso/portal.war" overwrite="true" /> <copy todir="${basedir}/target/josso/portal.war" overwrite="true"> <fileset dir="${basedir}/src/main/config/josso/portal.war" /> </copy> <jar destfile="${basedir}/target/josso/02portal.war" basedir="${basedir}/target/josso/portal.war" /> </tasks>
- </configuration> <goals> <goal>run</goal> </goals> </execution>
- <execution> <id>josso-agent-install</id> <phase>install</phase>
- <configuration> <tasks> <echo message="Deploying the JOSSO Agent for GateIn" /> <copy file="${basedir}/target/josso/02portal.war" todir="${gatein.location}/deploy/gatein.ear" overwrite="true" /> <copy file="${settings.localRepository}/org/gatein/sso/auth-callback/${project.version}/auth-callback-${project.version}.jar" todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
-
-
- <copy file="${settings.localRepository}/org/gatein/sso/agent/${project.version}/agent-${project.version}.jar" todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
-
-
-
- <copy file="${settings.localRepository}/org/josso/josso-agent/${version.josso}/josso-agent-${version.josso}.jar" todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
-
- <copy file="${settings.localRepository}/org/josso/josso-servlet-agent/${version.josso}/josso-servlet-agent-${version.josso}.jar" todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
-
- <copy file="${settings.localRepository}/org/josso/josso-agent-shared/${version.josso}/josso-agent-shared-${version.josso}.jar" todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
-
- <copy file="${settings.localRepository}/org/josso/josso-protocol-client/${version.josso}/josso-protocol-client-${version.josso}.jar" todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
-
- <copy file="${settings.localRepository}/org/josso/josso-common/${version.josso}/josso-common-${version.josso}.jar" todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
-
- <copy file="${settings.localRepository}/org/josso/josso-core/${version.josso}/josso-core-${version.josso}.jar" todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
- </tasks> </configuration> <goals> <goal>run</goal> </goals>
- </execution> </executions> </plugin> </plugins> </build> </profile>
- -->
+ Note: This profile is used only during Development for deploying artifacts into a Development Gatein server
+ -->
+ <profile>
+ <id>dev</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>dev</id>
+ <phase>install</phase>
+ <configuration>
+ <tasks>
+ <echo message="Deploying the Gatein SSO Agent" />
+
+ <copy
+ file="${settings.localRepository}/org/gatein/sso/sso-agent/${project.version}/${project.artifactId}-${project.version}.jar"
+ todir="${gatein.location}/deploy/gatein.ear/lib" overwrite="true" />
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
Added: components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java
===================================================================
--- components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java (rev 0)
+++ components/sso/trunk/agent/src/main/java/org/gatein/sso/agent/login/SPNEGOLoginModule.java 2010-03-28 10:05:19 UTC (rev 2374)
@@ -0,0 +1,473 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ *
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.gatein.sso.agent.login;
+
+import java.security.Principal;
+import java.security.PrivilegedAction;
+import java.security.acl.Group;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginContext;
+import javax.security.auth.login.LoginException;
+
+import org.ietf.jgss.GSSContext;
+import org.ietf.jgss.GSSCredential;
+import org.ietf.jgss.GSSException;
+import org.ietf.jgss.GSSManager;
+import org.ietf.jgss.Oid;
+import org.jboss.security.SimpleGroup;
+import org.jboss.security.auth.spi.AbstractServerLoginModule;
+import org.jboss.security.negotiation.NegotiationMessage;
+import org.jboss.security.negotiation.common.NegotiationContext;
+import org.jboss.security.negotiation.spnego.encoding.NegTokenInit;
+import org.jboss.security.negotiation.spnego.encoding.NegTokenTarg;
+import org.jboss.security.negotiation.spnego.encoding.SPNEGOMessage;
+
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.container.RootContainer;
+import org.exoplatform.services.security.Identity;
+import org.exoplatform.services.security.Authenticator;
+import org.exoplatform.services.security.IdentityRegistry;
+import org.exoplatform.services.security.jaas.UserPrincipal;
+
+/**
+ * Login module to work in conjunction with SPNEGOAuthenticator to handle the
+ * authentication requirements.
+ *
+ * @author darran.lofthouse(a)jboss.com
+ * @version $Revision: 83572 $
+ */
+public class SPNEGOLoginModule extends AbstractServerLoginModule
+{
+
+ private static final String SPNEGO = "SPNEGO";
+
+ private static final Oid kerberos;
+
+ // TODO - Pick a name for a default domain?
+ private String serverSecurityDomain;
+
+ private LoginContext serverLoginContext = null;
+
+ private Principal identity = null;
+
+ // GateIn integration
+ private static final String OPTION_PORTAL_CONTAINER_NAME = "portalContainerName";
+ private static final String OPTION_REALM_NAME = "realmName";
+ private String portalContainerName;
+ private String realmName;
+
+ static
+ {
+ try
+ {
+ kerberos = new Oid("1.2.840.113554.1.2.2");
+ }
+ catch (GSSException e)
+ {
+ throw new RuntimeException("Unable to initialise Oid", e);
+ }
+ }
+
+ @Override
+ public void initialize(final Subject subject,
+ final CallbackHandler callbackHandler, final Map sharedState,
+ final Map options)
+ {
+ super.initialize(subject, callbackHandler, sharedState, options);
+
+ // Which security domain to authenticate the server.
+ serverSecurityDomain = (String) options.get("serverSecurityDomain");
+ log.debug("serverSecurityDomain=" + serverSecurityDomain);
+
+ // GateIn integration
+ this.portalContainerName = getPortalContainerName(options);
+ this.realmName = getRealmName(options);
+ }
+
+ @Override
+ public boolean login() throws LoginException
+ {
+ if (super.login() == true)
+ {
+ log.debug("super.login()==true");
+ return true;
+ }
+
+ super.loginOk = false;
+
+ NegotiationContext negotiationContext = NegotiationContext
+ .getCurrentNegotiationContext();
+ NegotiationMessage requestMessage = negotiationContext.getRequestMessage();
+ if (requestMessage instanceof SPNEGOMessage == false)
+ {
+ String message = "Unsupported negotiation mechanism '"
+ + requestMessage.getMessageType() + "'.";
+ log.warn(message);
+ throw new LoginException(message);
+ }
+
+ try
+ {
+ Subject server = getServerSubject();
+ AcceptSecContext action = new AcceptSecContext(negotiationContext);
+ Object result = Subject.doAs(server, action);
+
+ log.trace("Result - " + result);
+
+ if (result instanceof Boolean)
+ {
+ if (Boolean.TRUE.equals(result))
+ {
+ super.loginOk = true;
+ if (getUseFirstPass() == true)
+ {
+ String userName = identity.getName();
+ log.debug("Storing username '" + userName + "' and empty password");
+ // Add the username and a null password to the shared state map
+ sharedState.put("javax.security.auth.login.name", identity);
+ sharedState.put("javax.security.auth.login.password", "");
+ }
+ }
+ }
+ else if (result instanceof Exception)
+ {
+ Exception e = (Exception) result;
+ log.error("Unable to authenticate", e);
+ throw new LoginException("Unable to authenticate - " + e.getMessage());
+ }
+
+ }
+ finally
+ {
+ if (serverLoginContext != null)
+ {
+ // TODO - We may not actually want to logout as if we use cache this may
+ // clear it,
+ serverLoginContext.logout();
+ }
+ }
+
+ log.trace("super.loginOk " + super.loginOk);
+ if (super.loginOk == true)
+ {
+ return true;
+ }
+ else
+ {
+ throw new LoginException("Continuation Required.");
+ }
+
+ }
+
+ @Override
+ protected Principal getIdentity()
+ {
+ return identity;
+ }
+
+ @Override
+ protected Group[] getRoleSets() throws LoginException
+ {
+ try
+ {
+ Authenticator authenticator = (Authenticator) getContainer()
+ .getComponentInstanceOfType(Authenticator.class);
+
+ String username = this.getIdentity().getName();
+ Identity identity = authenticator.createIdentity(username);
+
+ Group roles = new SimpleGroup("Roles");
+ Group callerPrincipal = new SimpleGroup("CallerPrincipal");
+ for (String role : identity.getRoles())
+ {
+ roles.addMember(this.createIdentity(role));
+ }
+
+ Group[] groups = { roles, callerPrincipal };
+ callerPrincipal.addMember(getIdentity());
+
+ return groups;
+ }
+ catch(Exception e)
+ {
+ throw new LoginException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean commit() throws LoginException
+ {
+ if (super.commit())
+ {
+ try
+ {
+ Authenticator authenticator = (Authenticator) getContainer()
+ .getComponentInstanceOfType(Authenticator.class);
+
+ IdentityRegistry identityRegistry =
+ (IdentityRegistry)getContainer().getComponentInstanceOfType(IdentityRegistry.class);
+
+ //TODO: Add check for single check
+
+ String username = this.getIdentity().getName();
+ Identity identity = authenticator.createIdentity(username);
+ identity.setSubject(this.subject);
+ identityRegistry.register(identity);
+
+ return true;
+ }
+ catch (Exception e)
+ {
+ throw new LoginException(e.getMessage());
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ protected Subject getServerSubject() throws LoginException
+ {
+ LoginContext lc = new LoginContext(serverSecurityDomain);
+ lc.login();
+ // Cache so we can log out.
+ serverLoginContext = lc;
+
+ Subject serverSubject = serverLoginContext.getSubject();
+ log.debug("Subject = " + serverSubject);
+ log.debug("Logged in '" + serverSecurityDomain + "' LoginContext");
+
+ return serverSubject;
+ }
+
+ private class AcceptSecContext implements PrivilegedAction
+ {
+
+ private final NegotiationContext negotiationContext;
+
+ public AcceptSecContext(final NegotiationContext negotiationContext)
+ {
+ this.negotiationContext = negotiationContext;
+ }
+
+ public Object run()
+ {
+ try
+ {
+ // The message type will have already been checked before this point so
+ // we know it is
+ // a SPNEGO message.
+ NegotiationMessage requestMessage = negotiationContext
+ .getRequestMessage();
+
+ // TODO - Ensure no way to fall through with gssToken still null.
+ byte[] gssToken = null;
+ if (requestMessage instanceof NegTokenInit)
+ {
+ NegTokenInit negTokenInit = (NegTokenInit) requestMessage;
+ List<Oid> mechList = negTokenInit.getMechTypes();
+
+ if (mechList.get(0).equals(kerberos))
+ {
+ gssToken = negTokenInit.getMechToken();
+ }
+ else
+ {
+ boolean kerberosSupported = false;
+
+ Iterator<Oid> it = mechList.iterator();
+ while (it.hasNext() && kerberosSupported == false)
+ {
+ kerberosSupported = it.next().equals(kerberos);
+ }
+
+ NegTokenTarg negTokenTarg = new NegTokenTarg();
+
+ if (kerberosSupported)
+ {
+ negTokenTarg.setNegResult(NegTokenTarg.ACCEPT_INCOMPLETE);
+ negTokenTarg.setSupportedMech(kerberos);
+ }
+ else
+ {
+ negTokenTarg.setNegResult(NegTokenTarg.REJECTED);
+ }
+ negotiationContext.setResponseMessage(negTokenTarg);
+
+ return Boolean.FALSE;
+ }
+
+ }
+ else if (requestMessage instanceof NegTokenTarg)
+ {
+ NegTokenTarg negTokenTarg = (NegTokenTarg) requestMessage;
+
+ gssToken = negTokenTarg.getResponseToken();
+ }
+
+ Object schemeContext = negotiationContext.getSchemeContext();
+ if (schemeContext != null
+ && schemeContext instanceof GSSContext == false)
+ {
+ throw new IllegalStateException(
+ "The schemeContext is not a GSSContext");
+ }
+
+ GSSContext gssContext = (GSSContext) schemeContext;
+ if (gssContext == null)
+ {
+ log.debug("Creating new GSSContext.");
+ GSSManager manager = GSSManager.getInstance();
+ gssContext = manager.createContext((GSSCredential) null);
+
+ negotiationContext.setSchemeContext(gssContext);
+ }
+
+ if (gssContext.isEstablished())
+ {
+ log
+ .warn("Authentication was performed despite already being authenticated!");
+
+ // TODO - Refactor to only do this once.
+ // identity = new
+ // KerberosPrincipal(gssContext.getSrcName().toString());
+ identity = new UserPrincipal(mapSpnegoToGateIn(gssContext.getSrcName()
+ .toString()));
+
+ log.debug("context.getCredDelegState() = "
+ + gssContext.getCredDelegState());
+ log.debug("context.getMutualAuthState() = "
+ + gssContext.getMutualAuthState());
+ log.debug("context.getSrcName() = "
+ + gssContext.getSrcName().toString());
+
+ negotiationContext.setAuthenticationMethod(SPNEGO);
+ negotiationContext.setAuthenticated(true);
+
+ return Boolean.TRUE;
+ }
+
+ byte[] respToken = gssContext.acceptSecContext(gssToken, 0,
+ gssToken.length);
+
+ if (respToken != null)
+ {
+ NegTokenTarg negTokenTarg = new NegTokenTarg();
+ negTokenTarg.setResponseToken(respToken);
+
+ negotiationContext.setResponseMessage(negTokenTarg);
+ }
+
+ if (gssContext.isEstablished() == false)
+ {
+ return Boolean.FALSE;
+ }
+ else
+ {
+ // identity = new
+ // KerberosPrincipal(gssContext.getSrcName().toString());
+ identity = new UserPrincipal(mapSpnegoToGateIn(gssContext.getSrcName()
+ .toString()));
+
+ log.debug("context.getCredDelegState() = "
+ + gssContext.getCredDelegState());
+ log.debug("context.getMutualAuthState() = "
+ + gssContext.getMutualAuthState());
+ log.debug("context.getSrcName() = "
+ + gssContext.getSrcName().toString());
+
+ // TODO - Get these two in synch - maybe isAuthenticated based on an
+ // authentication method been set?
+ negotiationContext.setAuthenticationMethod(SPNEGO);
+ negotiationContext.setAuthenticated(true);
+ return Boolean.TRUE;
+ }
+
+ }
+ catch (Exception e)
+ {
+ return e;
+ }
+
+ }
+ }
+
+ private String mapSpnegoToGateIn(String spnegoPrincipal)
+ {
+ String exoPrincipal = spnegoPrincipal;
+
+ int indexOf = exoPrincipal.indexOf('@');
+ if (indexOf != -1)
+ {
+ exoPrincipal = exoPrincipal.substring(0, indexOf).trim();
+ }
+
+ return exoPrincipal;
+ }
+
+ private String getPortalContainerName(Map options)
+ {
+ if (options != null)
+ {
+ String optionValue = (String) options.get(OPTION_PORTAL_CONTAINER_NAME);
+ if (optionValue != null && optionValue.length() > 0)
+ {
+ return optionValue;
+ }
+ }
+ return PortalContainer.DEFAULT_PORTAL_CONTAINER_NAME;
+ }
+
+ private String getRealmName(Map options)
+ {
+ if (options != null)
+ {
+ String optionValue = (String) options.get(OPTION_REALM_NAME);
+ if (optionValue != null && optionValue.length() > 0)
+ {
+ return optionValue;
+ }
+ }
+ return PortalContainer.DEFAULT_REALM_NAME;
+ }
+
+ private ExoContainer getContainer() throws Exception
+ {
+ // TODO set correct current container
+ ExoContainer container = ExoContainerContext.getCurrentContainer();
+ if (container instanceof RootContainer)
+ {
+ container = RootContainer.getInstance().getPortalContainer(
+ portalContainerName);
+ }
+ return container;
+ }
+}
Modified: components/sso/trunk/pom.xml
===================================================================
--- components/sso/trunk/pom.xml 2010-03-26 23:21:58 UTC (rev 2373)
+++ components/sso/trunk/pom.xml 2010-03-28 10:05:19 UTC (rev 2374)
@@ -76,6 +76,9 @@
<!-- servlet-api -->
<version.servlet-api>2.5</version.servlet-api>
+
+ <!-- SPNEGO support using JBoss Negotiation -->
+ <version.jboss.negotiation>2.0.3.GA</version.jboss.negotiation>
</properties>
<dependencyManagement>
@@ -198,6 +201,13 @@
<artifactId>servlet-api</artifactId>
<version>${version.servlet-api}</version>
</dependency>
+
+ <!-- SPNEGO support using JBoss Negotiation -->
+ <dependency>
+ <groupId>org.jboss.security</groupId>
+ <artifactId>jboss-negotiation-spnego</artifactId>
+ <version>${version.jboss.negotiation}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
14 years, 9 months
gatein SVN: r2373 - in portal/branches/EPP_5_0_Branch: portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultSkin/background and 20 other directories.
by do-not-reply@jboss.org
Author: wesleyhales
Date: 2010-03-26 19:21:58 -0400 (Fri, 26 Mar 2010)
New Revision: 2373
Added:
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultSkin/background/Logo-trans.gif
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultSkin/background/banner-bg.jpg
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UILogoPortlet/DefaultSkin/background/
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UILogoPortlet/DefaultSkin/background/red-bg.gif
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultSkin/background/active-button-bg.gif
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultSkin/background/nav-bg.jpg
portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/background/gray-dot-bg.gif
portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIToolbarContainer/background/JbossLogo.gif
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/bluebox-bg.jpg
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/bluebox-tab1-bg.jpg
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/username-bg.gif
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/usernames.jpg
Modified:
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultStylesheet.css
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UILogoPortlet/DefaultStylesheet.css
portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultStylesheet.css
portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/UIPortalApplicationSkin.css
portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/control/UIWorkspace/Stylesheet.css
portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIDashboard/Stylesheet.css
portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIPage/Stylesheet.css
portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIToolbarContainer/Stylesheet.css
portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIBreadcumbs/Stylesheet.css
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/portal/classic/portal.xml
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/portal/template/classic/portal.xml
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/groovy/webui/component/UIHomePagePortlet.gtmpl
portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultStylesheet.css
Log:
JBEPP-264 - Foundation for new skin. Waiting on Jason for some videos and there are still more tweeks that need to be made.
Added: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultSkin/background/Logo-trans.gif
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultSkin/background/Logo-trans.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultSkin/background/banner-bg.jpg
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultSkin/background/banner-bg.jpg
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultStylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultStylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIBannerPortlet/DefaultStylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,44 +1,46 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
#banner {
border-top: 1px solid #b5b6b6;
}
.UIBannerPortlet {
- zoom: 100%;
- background: #B5B6B6;
+ background: url('DefaultSkin/background/banner-bg.jpg') repeat-x; /* orientation=lt */
+ border-left: 1px solid #b4b4b4;
+ border-right: 1px solid #b4b4b4;
}
.UIBannerPortlet .LeftBanner {
- border-top: 1px solid #b5b6b6;
+ /*border-top: 1px solid #b5b6b6;*/
padding-left: 10px; /* orientation=lt */
padding-right: 10px; /* orientation=rt */
+ border: 0;
}
.UIBannerPortlet .RightBanner {
- background: url('DefaultSkin/background/Logo.gif') no-repeat left 11px; /* orientation=lt */
- background: url('DefaultSkin/background/Logo.gif') no-repeat right -39px; /* orientation=rt */
+ background: url('DefaultSkin/background/Logo-trans.gif') no-repeat 11px 15px; /* orientation=lt */
+ background: url('DefaultSkin/background/Logo-trans.gif') no-repeat right -39px; /* orientation=rt */
}
.UIBannerPortlet .MiddleBanner {
- height: 43px;
+ height: 66px;
}
.UIBannerPortlet .LeftLoginContainer {
@@ -63,7 +65,7 @@
}
.UIBannerPortlet .MiddleLoginContainer a:hover {
- color: #e7e7e7;
+ color: #176ba6;
}
.UIBannerPortlet .MiddleLoginContainer .Name {
@@ -91,7 +93,7 @@
font-weight: bold;
display: block;
line-height: 35px;
- color: white;
+ color: #063e65;
background: none;
}
@@ -102,7 +104,7 @@
font-weight: bold;
display: block;
line-height: 35px;
- color: white;
+ color: #063e65;
background: none;
}
@@ -111,6 +113,6 @@
font-weight: bold;
float: left;
display: block;
+ color: #063e65;
line-height: 35px;
- color: white;
}
\ No newline at end of file
Modified: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,25 +1,25 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
.UIFooterPortlet {
margin: 0;
- background: #dedfdf;
+ background: transparent;
}
.UIFooterPortlet .RepeatFooter {
Added: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UILogoPortlet/DefaultSkin/background/red-bg.gif
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UILogoPortlet/DefaultSkin/background/red-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UILogoPortlet/DefaultStylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UILogoPortlet/DefaultStylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UILogoPortlet/DefaultStylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,26 +1,27 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
.UILogoPortlet {
zoom: 100%;
padding: 5px;
- line-height: 38px;
+ line-height: 44px;
+ background: url('DefaultSkin/background/red-bg.gif') repeat-x top left;
}
.ClearFix:after {
@@ -44,7 +45,7 @@
.UILogoPortlet .Img,.UILogoPortlet .BannerTitle {
float: left; /* orientation=lt */
float: right; /* orientation=rt */
- color: #3c3c3c;
+ color: #fff;
font-size: 17px;
}
Added: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultSkin/background/active-button-bg.gif
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultSkin/background/active-button-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultSkin/background/nav-bg.jpg
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultSkin/background/nav-bg.jpg
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultStylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultStylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/portlet/web/src/main/webapp/skin/portal/webui/component/UINavigationPortlet/DefaultStylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -25,8 +25,12 @@
*/
.UINavigationPortlet {
- background: #b6b6b6;
- padding: 0px 8px;
+ background: #a3a3a3;
+ padding: 0;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #fff;
+ border-left: 1px solid #b4b4b4;
+ border-right: 1px solid #b4b4b4;
}
.UINavigationPortlet .UINavigationBar {
@@ -34,7 +38,7 @@
}
.UINavigationPortlet .UINavigationBar .UIHorizontalTabs {
- height: 33px;
+ height: 30px;
}
.UINavigationPortlet .UINavigationBar .UIHorizontalTabs .TabsContainer {
@@ -43,20 +47,20 @@
}
.UINavigationPortlet .UINavigationBar .LeftNavigationBar {
- background: url('DefaultSkin/background/LeftNavigation.gif') no-repeat left top;
- padding-left: 3px;
- height: 32px;
+ background: url('DefaultSkin/background/nav-bg.jpg') no-repeat left top;
+ /*padding-left: 3px;*/
+ height: 30px;
}
.UINavigationPortlet .UINavigationBar .RightNavigationBar {
- background: url('DefaultSkin/background/RightNavigation.gif') no-repeat right top;
- padding-right: 3px;
- height: 32px;
+ /*padding-right: 3px;*/
+ background: none;
+ height: 29px;
}
.UINavigationPortlet .UINavigationBar .MiddleNavigationBar {
- height: 32px;
- background: url('DefaultSkin/background/MiddleNavigation.gif') repeat-x;
+ height: 29px;
+ background: none;
padding: 0px 8px 0px 8px;
}
@@ -77,7 +81,7 @@
.UINavigationPortlet .UITab .NormalNavigationTab {
line-height: 26px;
- margin: 6px 8px 0px 0px;
+ margin: 4px 8px 0px 0px;
}
.UINavigationPortlet .UITab .NormalNavigationTab .LeftTab {
@@ -93,7 +97,7 @@
.UINavigationPortlet .UITab .NormalNavigationTab .MiddleTab {
line-height: 21px;
text-align: center;
- padding: 0px 4px 0px 4px;
+ padding: 1px 4px 0px 4px;
}
.UINavigationPortlet .UITab .NormalNavigationTab .TabIcon {
@@ -108,50 +112,52 @@
.UINavigationPortlet .UITab .NormalNavigationTab .DropDownArrowIcon {
padding-right: 16px; /* orientation=lt */
padding-left: 16px; /* orientation=rt */
- background: url('DefaultSkin/background/NavDownArrow.gif') no-repeat right; /* orientation=lt */
- background: url('DefaultSkin/background/NavDownArrow.gif') no-repeat left; /* orientation=rt */
+ background: none; /* orientation=lt */
+ background: none; /* orientation=rt */
cursor: pointer;
}
/*###############-Hightlight Navigation Tab -################*/
.UINavigationPortlet .UITab .HighlightNavigationTab {
- line-height: 26px;
- margin: 6px 8px 0px 0px;
+ line-height: 29px;
+ margin: 0px 8px 0px 0px;
}
.UINavigationPortlet .UITab .HighlightNavigationTab .LeftTab {
- line-height: 26px;
+ line-height: 29px;
padding-left: 3px;
- background: url('DefaultSkin/background/NavigationTab.gif') no-repeat left -108px;
+ background: #fff url('DefaultSkin/background/active-button-bg.gif') repeat-x 0 0;
+ border-left: 1px solid #000;
}
.UINavigationPortlet .UITab .HighlightNavigationTab .RightTab {
- line-height: 26px;
+ line-height: 29px;
padding-right: 3px;
- background: url('DefaultSkin/background/NavigationTab.gif') no-repeat right -130px;
+ background: #fff url('DefaultSkin/background/active-button-bg.gif') repeat-x 0 0;
+ border-right: 1px solid #000;
}
.UINavigationPortlet .UITab .HighlightNavigationTab .MiddleTab {
- height: 21px;
+ height: 29px;
text-align: center;
- padding: 0px 4px 0px 4px;
- background: #6d94c8;
- margin-bottom: 4px;
+ padding: 1px 4px 0px 4px;
+ background: none;
+ margin-bottom: 0;
}
.UINavigationPortlet .UITab .HighlightNavigationTab .TabIcon {
color: #fff;
- line-height: 21px;
+ line-height: 29px;
}
.UINavigationPortlet .UITab .HighlightNavigationTab a {
- color: #fff;
+ color: #3c3c3c;
}
.UINavigationPortlet .UITab .HighlightNavigationTab .DropDownArrowIcon {
- padding-right: 16px; /* orientation=lt */
- padding-left: 16px; /* orientation=rt */
+ padding-right: 0; /* orientation=lt */
+ padding-left: 0; /* orientation=rt */
background: url('DefaultSkin/background/NavDownArrow.gif') no-repeat right; /* orientation=lt */
background: url('DefaultSkin/background/NavDownArrow.gif') no-repeat left; /* orientation=rt */
cursor: pointer;
@@ -160,46 +166,49 @@
/*###############-Selected Navigation Tab-################*/
.UINavigationPortlet .UITab .SelectedNavigationTab {
- line-height: 26px;
- margin: 6px 8px 0px 0px;
+ line-height: 29px;
+ margin: 0 8px 0px 0px;
}
.UINavigationPortlet .UITab .SelectedNavigationTab .LeftTab {
- line-height: 21px;
- background: #0a4da6 url('DefaultSkin/background/NavigationTab.gif') no-repeat left -28px;
+ line-height: 29px;
padding-left: 3px;
+ background: #fff url('DefaultSkin/background/active-button-bg.gif') repeat-x 0 0;
+ border-left: 1px solid #000;
}
.UINavigationPortlet .UITab .SelectedNavigationTab .RightTab {
- line-height: 21px;
- background: #0a4da6 url('DefaultSkin/background/NavigationTab.gif') no-repeat right -55px;
+ line-height: 29px;
padding-right: 3px;
+ background: #fff url('DefaultSkin/background/active-button-bg.gif') repeat-x 0 0;
+ border-right: 1px solid #000;
}
.UINavigationPortlet .UITab .SelectedNavigationTab .MiddleTab {
- line-height: 21px;
- background: #0a4da6 url('DefaultSkin/background/NavigationTab.gif') repeat-x;
+ height: 29px;
text-align: center;
- padding: 0px 4px 0px 4px;
+ padding: 1px 4px 0px 4px;
+ background: none;
+ margin-bottom: 0;
}
.UINavigationPortlet .UITab .SelectedNavigationTab .TabIcon {
- color: #f57a00;
- line-height: 21px;
- padding-bottom: 5px;
- background: url('DefaultSkin/background/NavigationTab.gif') no-repeat center -82px;;
+ color: #fff;
+ line-height: 29px;
+ padding-bottom:0;
+ background: none;
}
.UINavigationPortlet .UITab .SelectedNavigationTab a {
- color: #f57a00;
+ color: #3c3c3c;
}
.UINavigationPortlet .UITab .SelectedNavigationTab .DropDownArrowIcon {
padding-right: 16px; /* orientation=lt */
padding-left: 16px; /* orientation=rt */
- background: url('DefaultSkin/background/NavDownArrow.gif') no-repeat right center; /* orientation=lt */
- background: url('DefaultSkin/background/NavDownArrow.gif') no-repeat left center; /* orientation=rt */
+ background: none; /* orientation=lt */
+ background: none; /* orientation=rt */
cursor: pointer;
}
@@ -343,37 +352,37 @@
/***********GroupNavigation*************/
.UINavigationPortlet .GroupNavigation .LeftNavigationBar {
- background: url('DefaultSkin/background/NavGroup.gif') no-repeat left top;
+ background: #c7c3ad none no-repeat left top;
}
.UINavigationPortlet .GroupNavigation .RightNavigationBar {
- background: url('DefaultSkin/background/NavGroup.gif') no-repeat right top;
+ background: #c7c3ad none no-repeat right top;
}
.UINavigationPortlet .GroupNavigation .MiddleNavigationBar {
- background: url('DefaultSkin/background/NavGroup.gif') repeat-x center bottom;
+ background: #c7c3ad none repeat-x center bottom;
}
.UINavigationPortlet .GroupNavigation .UITab .HighlightNavigationTab .LeftTab {
- background: url('DefaultSkin/background/NavigationTab.gif') no-repeat left -152px;
+ background: #fff none no-repeat left -152px;
}
.UINavigationPortlet .GroupNavigation .UITab .HighlightNavigationTab .RightTab {
- background: url('DefaultSkin/background/NavigationTab.gif') no-repeat right -174px;
+ background: #fff none no-repeat right -174px;
}
.UINavigationPortlet .GroupNavigation .UITab .HighlightNavigationTab .MiddleTab {
- background: #ffcf01;
+ background: #fff;
}
.UINavigationPortlet .GroupNavigation .UITab .SelectedNavigationTab .LeftTab {
- background: #ffa200 url('DefaultSkin/background/NavigationTab.gif') no-repeat left -28px;
+ background: #fff none no-repeat left -28px;
}
.UINavigationPortlet .GroupNavigation .UITab .SelectedNavigationTab .RightTab {
- background: #ffa200 url('DefaultSkin/background/NavigationTab.gif') no-repeat right -55px;
+ background: #fff none no-repeat right -55px;
}
.UINavigationPortlet .GroupNavigation .UITab .SelectedNavigationTab .MiddleTab {
- background: #ffa200 url('DefaultSkin/background/NavigationTab.gif') repeat-x;
+ background: #fff none repeat-x;
}
\ No newline at end of file
Added: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/background/gray-dot-bg.gif
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/background/gray-dot-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/UIPortalApplicationSkin.css
===================================================================
--- portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/UIPortalApplicationSkin.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/UIPortalApplicationSkin.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,22 +1,22 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
@import url(control/Stylesheet.css);
@import url(customization/Stylesheet.css);
@import url(view/Stylesheet.css);
@@ -53,7 +53,7 @@
}
body {
- background: #dedfdf;
+ background: #fff url('../../../background/gray-dot-bg.gif') repeat-x top left;
margin: 0px; padding: 0px;
font-family: Tahoma,Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
@@ -80,22 +80,22 @@
.RightBlock {
float: right; /* orientation=lt */
float: left; /* orientation=rt */
-}
-
-.ClearFix:after {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
-}
-
-.ClearFix {
- !display: inline-block;
- !zoom: 1;
- !display: block;
-}
+}
+.ClearFix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+
+.ClearFix {
+ !display: inline-block;
+ !zoom: 1;
+ !display: block;
+}
+
.InlineContainer {
overflow: hidden;
}
Modified: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/control/UIWorkspace/Stylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/control/UIWorkspace/Stylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/control/UIWorkspace/Stylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,23 +1,23 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
.UIWorkingWorkspace {
margin: 0px;
@@ -30,11 +30,13 @@
.UIWorkingWorkspace {
width: 980px;
margin: auto;
- background: #b5b6b6;
+ background: #fff;
}
.UIWorkingWorkspace .UIPageBody {
-
+ border-bottom:1px solid #B4B4B4;
+ border-left:1px solid #B4B4B4;
+ border-right:1px solid #B4B4B4;
}
.MaskLayer {
Modified: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIDashboard/Stylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIDashboard/Stylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIDashboard/Stylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -24,7 +24,7 @@
.UIDashboardPortlet {
background: #fff;
- border: 1px solid #b7b7b7;
+ border: none;
border-top: none;
height: 100%;
}
@@ -61,7 +61,7 @@
}
.UITabPaneDashboard {
- padding: 0 9px;
+ /*padding: 0 9px;*/
}
.UITabPaneDashboard .LtTabDashboard {
Modified: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIPage/Stylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIPage/Stylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIPage/Stylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,28 +1,28 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
/*##############################-Page Layout Decorator-################################*/
-
-.LAYOUT-BLOCK .PageLayoutDecorator {
- cursor: move;
-}
-
+
+.LAYOUT-BLOCK .PageLayoutDecorator {
+ cursor: move;
+}
+
.UIPageBody .PageLayoutDecorator {
padding: 0px;
margin: 0px 2px auto 2px;
@@ -93,11 +93,11 @@
}
.UIPageBody .VIEW-PAGEBODY .UIPage {
- padding: 0px 8px;
+ padding: 0px 1px;
}
.UIPageBody .VIEW-PAGEBODY .UIPage .UIComponentBlock {
- background: white;
+ background: white;
height: 100%;
}
@@ -105,6 +105,7 @@
background: url('background/BgPagebody.gif') no-repeat left top;
padding-left: 6px;
height: 16px;
+ display: none;
}
.UIPageBody .BRPagebody {
Modified: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIToolbarContainer/Stylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIToolbarContainer/Stylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIToolbarContainer/Stylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,22 +1,22 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
.UIToolbarContainer {
padding: 0px;
height: auto;
@@ -51,10 +51,11 @@
}
.UIToolbarContainer .NormalContainerBlock .ToolbarContainer {
- background: url('background/ToolbarContainer.gif') repeat-x left top;
+ background: #f6f6f6 none repeat-x left top;
height: 32px;
- border-left: 1px solid white;
- border-right: 1px solid white;
+ border-left: 1px solid #a2a2a2;
+ border-right: 1px solid #a2a2a2;
+ border-bottom: 1px solid #dedede;
}
.UIToolbarContainer .ToolbarContainer a {
@@ -62,7 +63,7 @@
padding: 0px 5px 0px 35px; /* orientation=lt */
padding: 0px 35px 0px 5px; /* orientation=rt */
white-space: nowrap;
- color: #3e3e3e;
+ color: #540306;
}
.UIToolbarContainer .UITab a:hover {
@@ -84,36 +85,36 @@
padding-left: 2px; /* orientation=rt */
text-align: left; /* orientation=lt */
text-align: right; /* orientation=rt */
- float: none;
- !float: left;/* orientation=rt */
+ float: none;
+ !float: left;/* orientation=rt */
_float: none;/* orientation=rt */
}
-
-.UserToolBarSitePortletTDContainer {
- position: relative;
-}
-
-.UserToolBarGroupPortletTDContainer {
- position: relative;
-}
-
-.UserToolBarGroupPortletTDContainer {
- position: relative;
-}
-
-.UserToolBarDashboardPortletTDContainer {
- position: relative;
-}
-
-.AdminToolBarPortletTDContainer {
- position: relative;
-}
+.UserToolBarSitePortletTDContainer {
+ position: relative;
+}
+
+.UserToolBarGroupPortletTDContainer {
+ position: relative;
+}
+
+.UserToolBarGroupPortletTDContainer {
+ position: relative;
+}
+
+.UserToolBarDashboardPortletTDContainer {
+ position: relative;
+}
+
+.AdminToolBarPortletTDContainer {
+ position: relative;
+}
+
/****************************/
.UIToolbarContainer .MenuItemContainer {
position: absolute;
- border: 1px solid #9e9fa3;
+ border: 1px solid #9e9fa3;
display: none;
}
@@ -176,7 +177,7 @@
.UIToolbarContainer .GroupIcon {
background: url('background/ToolbarContainer.gif') no-repeat left -128px; /* orientation=lt */
- background: url('background/ToolbarContainer.gif') no-repeat 100% -128px; /* orientation=rt */
+ background: url('background/ToolbarContainer.gif') no-repeat 100% -128px; /* orientation=rt */
margin-left: 10px; /* orientation=lt */
margin-right: 10px; /* orientation=rt */
}
@@ -237,8 +238,8 @@
/***************UIStarToolBarPortlet*****************/
.UIStarToolBarPortlet {
- background: url('background/GateinLogo.gif') no-repeat 10px 6px; /* orientation=lt */
- background: url('background/GateinLogo.gif') no-repeat 23px 5px; /* orientation=rt */
+ background: url('background/JbossLogo.gif') no-repeat 6px 2px; /* orientation=lt */
+ background: url('background/JbossLogo.gif') no-repeat 19px 2px; /* orientation=rt */
width: 64px;
height: 32px;
}
Added: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIToolbarContainer/background/JbossLogo.gif
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/portal/webui/component/view/UIToolbarContainer/background/JbossLogo.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIBreadcumbs/Stylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIBreadcumbs/Stylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/eXoResources/src/main/webapp/skin/DefaultSkin/webui/component/UIBreadcumbs/Stylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,22 +1,22 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
.UIWindow .UIBreadcumbsPortlet {
margin: 0px;
}
@@ -26,7 +26,8 @@
.UIBreadcumbs {
line-height: 25px;
- padding: 0 8px;
+ border-left: 1px solid #b4b4b4;
+ border-right: 1px solid #b4b4b4;
}
.UIBreadcumbs a {
@@ -48,7 +49,7 @@
}
.UIBreadcumbs .LeftBreadcumbsBar {
- background-color: #e9e9e9;
+ background-color: #fff;
}
.UIBreadcumbs .RightBreadcumbsBar {
Modified: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/portal/classic/portal.xml
===================================================================
--- portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/portal/classic/portal.xml 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/portal/classic/portal.xml 2010-03-26 23:21:58 UTC (rev 2373)
@@ -58,14 +58,14 @@
<show-info-bar>false</show-info-bar>
</portlet-application>
- <portlet-application>
- <portlet>
- <application-ref>web</application-ref>
- <portlet-ref>BreadcumbsPortlet</portlet-ref>
- </portlet>
- <access-permissions>Everyone</access-permissions>
- <show-info-bar>false</show-info-bar>
- </portlet-application>
+ <!--<portlet-application>-->
+ <!--<portlet>-->
+ <!--<application-ref>web</application-ref>-->
+ <!--<portlet-ref>BreadcumbsPortlet</portlet-ref>-->
+ <!--</portlet>-->
+ <!--<access-permissions>Everyone</access-permissions>-->
+ <!--<show-info-bar>false</show-info-bar>-->
+ <!--</portlet-application>-->
<page-body> </page-body>
Modified: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/portal/template/classic/portal.xml
===================================================================
--- portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/portal/template/classic/portal.xml 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/portal/template/classic/portal.xml 2010-03-26 23:21:58 UTC (rev 2373)
@@ -58,14 +58,14 @@
<show-info-bar>false</show-info-bar>
</portlet-application>
- <portlet-application>
- <portlet>
- <application-ref>web</application-ref>
- <portlet-ref>BreadcumbsPortlet</portlet-ref>
- </portlet>
- <access-permissions>Everyone</access-permissions>
- <show-info-bar>false</show-info-bar>
- </portlet-application>
+ <!--<portlet-application>-->
+ <!--<portlet>-->
+ <!--<application-ref>web</application-ref>-->
+ <!--<portlet-ref>BreadcumbsPortlet</portlet-ref>-->
+ <!--</portlet>-->
+ <!--<access-permissions>Everyone</access-permissions>-->
+ <!--<show-info-bar>false</show-info-bar>-->
+ <!--</portlet-application>-->
<page-body> </page-body>
Modified: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/groovy/webui/component/UIHomePagePortlet.gtmpl
===================================================================
--- portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/groovy/webui/component/UIHomePagePortlet.gtmpl 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/groovy/webui/component/UIHomePagePortlet.gtmpl 2010-03-26 23:21:58 UTC (rev 2373)
@@ -26,7 +26,7 @@
<div class="MiddleAccountsContainer">
<div class="InstructionTitle"><%=_ctx.appRes("UIHomePagePortlet.Label.Title")%></div>
<div class="AccountsContainerDeco">
- <div class="AccountBlock AdministratorUser">
+ <div class="AccountBlock AdministratorUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=root&password=gtn'">
<div class="AccountInfos">
<div class="AccountTitle"><a href="${_ctx.getPortalContextPath()}/login?username=root&password=gtn"><%=_ctx.appRes("UIHomePagePortlet.Label.Administrator")%></a></div>
<div class="Username">
@@ -40,7 +40,7 @@
</div>
</div>
<div class="SeparatorLine"><span></span></div>
- <div class="AccountBlock ManagerUser">
+ <div class="AccountBlock ManagerUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=john&password=gtn'">
<div class="AccountInfos">
<div class="AccountTitle"><a href="${_ctx.getPortalContextPath()}/login?username=john&password=gtn"><%=_ctx.appRes("UIHomePagePortlet.Label.Manager")%></a></div>
<div class="Username">
@@ -54,7 +54,7 @@
</div>
</div>
<div class="SeparatorLine"><span></span></div>
- <div class="AccountBlock NormalUser">
+ <div class="AccountBlock NormalUser" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=mary&password=gtn'">
<div class="AccountInfos">
<div class="AccountTitle"><a href="${_ctx.getPortalContextPath()}/login?username=mary&password=gtn"><%=_ctx.appRes("UIHomePagePortlet.Label.User")%></a></div>
<div class="Username">
@@ -68,7 +68,7 @@
</div>
</div>
<div class="SeparatorLine"><span></span></div>
- <div class="AccountBlock DemoUser" style="margin-right: 0px;">
+ <div class="AccountBlock DemoUser" style="margin-right: 0px;" onclick="window.location='${_ctx.getPortalContextPath()}/login?username=demo&password=gtn'">
<div class="AccountInfos">
<div class="AccountTitle"><a href="${_ctx.getPortalContextPath()}/login?username=demo&password=gtn"><%=_ctx.appRes("UIHomePagePortlet.Label.Demo")%></a></div>
<div class="Username">
@@ -92,4 +92,3 @@
</div>
<div class="ClearBoth"><span></span></div>
</div>
-
Added: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/bluebox-bg.jpg
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/bluebox-bg.jpg
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/bluebox-tab1-bg.jpg
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/bluebox-tab1-bg.jpg
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/username-bg.gif
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/username-bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/usernames.jpg
===================================================================
(Binary files differ)
Property changes on: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultSkin/background/epp/usernames.jpg
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultStylesheet.css
===================================================================
--- portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultStylesheet.css 2010-03-26 13:48:01 UTC (rev 2372)
+++ portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/templates/skin/webui/component/UIHomePagePortlet/DefaultStylesheet.css 2010-03-26 23:21:58 UTC (rev 2373)
@@ -1,22 +1,22 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
.UIWindow .UIHomePagePortlet {
margin: 0px;
padding: 10px;
@@ -24,8 +24,8 @@
.UIHomePagePortlet {
background: white;
- padding: 8px 8px 0px;
- width: 948px;
+ padding: 0;
+ width: 976px;
}
.UIHomePagePortlet .TRContainer .PortletDecoration {
@@ -40,6 +40,8 @@
border: 1px solid #C6C6C6;
text-align: center;
background: url('DefaultSkin/background/BgRightColumn.gif') repeat-x bottom center;
+ display: none;
+ visibility: hidden;
}
.UIHomePagePortlet .TRContainer a {
@@ -63,7 +65,7 @@
height: 65px;
width: 80px;
margin: 20px auto;
- cursor: pointer;
+ cursor: pointer;
display: block;
}
@@ -72,15 +74,17 @@
height: 70px;
width: 80px;
margin: 20px auto;
- cursor: pointer;
+ cursor: pointer;
display: block;
}
.UIHomePagePortlet .TLContainer {
- border: 1px solid #ffffff;
+ /*border-left:1px solid #B4B4B4;*/
+ /*border-right:1px solid #B4B4B4;*/
+ /*border-bottom:1px solid #B4B4B4;*/
float: left; /* orientation=lt */
float: right; /* orientation=rt */
- width: 713px;
+ width: 100%;
}
.UIHomePagePortlet .TLContainer .PortletDecoration {
@@ -92,8 +96,8 @@
}
.UIHomePagePortlet .AdImageLeft {
- background: url('DefaultSkin/background/RightHome.jpg') no-repeat left top; /* orientation=lt */
- background: url('DefaultSkin/background/RightHome-rt.jpg') no-repeat right top; /* orientation=rt */
+ background: url('DefaultSkin/background/epp/bluebox-tab1-bg.jpg') no-repeat left top; /* orientation=lt */
+ background: url('DefaultSkin/background/epp/bluebox-tab1-bg.jpg') no-repeat right top; /* orientation=rt */
}
*html .UIHomePagePortlet .AdImageLeft {
@@ -102,21 +106,13 @@
.UIHomePagePortlet .AdImageRight {
text-align: right; /* orientation=lt */
text-align: left; /* orientation=rt */
- height: 255px;
+ height: 278px;
padding: 0px 10px 0px 200px; /* orientation=lt */
padding: 0px 200px 0px 10px; /* orientation=rt */
}
.UIHomePagePortlet .AdImageLeft .EmptyBlock {
- height: 120px;
- font-size: 21px;
- color: #616161;
- text-align: center;
- font-family: arial;
- font-weight: bold;
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- padding: 50px 0 0;
+ display: none;
}
.UIHomePagePortlet .AdImageLeft .EmptyBlock div {
@@ -138,37 +134,38 @@
}
.UIHomePagePortlet .HomePortletContent {
- margin-top: 8px;
+ /*margin-top: 8px;*/
}
.UIHomePagePortlet .HomePortletContent .LeftAccountsContainer {
padding-left: 3px;
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat left -529px;
+ background: url('DefaultSkin/background/epp/username-bg.gif') repeat-x left top;
}
_html .UIHomePagePortlet .HomePortletContent .LeftAccountsContainer {
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat 4px -529px;
+ background: url('DefaultSkin/background/epp/username-bg.gif') repeat-x left top;
}
.UIHomePagePortlet .HomePortletContent .RightAccountsContainer {
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat right -799px;
+ background: url('DefaultSkin/background/epp/username-bg.gif') repeat-x left top;
padding-right: 3px;
_padding-right: 0px;
}
_html .UIHomePagePortlet .HomePortletContent .RightAccountsContainer {
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat 114% -799px;/* orientation=rt */
+ background: url('DefaultSkin/background/epp/username-bg.gif') repeat-x left top;
padding-right: 8px;/* orientation=rt */
}
.UIHomePagePortlet .HomePortletContent .MiddleAccountsContainer {
- background: url('DefaultSkin/background/HomePagePortlet.gif') repeat-x center -379px;
- height: 127px;
- padding: 0px 8px;
+ background: url('DefaultSkin/background/epp/usernames.jpg') no-repeat left top;
+ height: 167px;
+ padding: 0;
}
.UIHomePagePortlet .HomePortletContent .AccountsContainerDeco {
height: 105px;
+ padding:43px 0 0 31px;
overflow: hidden;
}
@@ -178,34 +175,33 @@
color: #808185;
text-align: left; /* orientation=lt */
text-align: right; /* orientation=rt */
+ display: none;
}
.UIHomePagePortlet .HomePortletContent .AccountBlock {
height: 105px;
- width: 160px;
+ width: 218px;
float: left; /* orientation=lt */
float: right; /* orientation=rt */
text-align: right; /* orientation=rt */
+ cursor: pointer;
}
+
.UIHomePagePortlet .HomePortletContent .AdministratorUser {
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat right top; /* orientation=lt */
- background: url('DefaultSkin/background/HomePagePortlet-rt.gif') no-repeat 10px top; /* orientation=rt */
+
}
.UIHomePagePortlet .HomePortletContent .ManagerUser {
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat right -95px; /* orientation=lt */
- background: url('DefaultSkin/background/HomePagePortlet-rt.gif') no-repeat 10px -95px; /* orientation=rt */
+
}
.UIHomePagePortlet .HomePortletContent .NormalUser {
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat right -185px; /* orientation=lt */
- background: url('DefaultSkin/background/HomePagePortlet-rt.gif') no-repeat 10px -185px; /* orientation=rt */
+
}
.UIHomePagePortlet .HomePortletContent .DemoUser {
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat right -275px; /* orientation=lt */
- background: url('DefaultSkin/background/HomePagePortlet-rt.gif') no-repeat 10px -275px; /* orientation=rt */
+
}
.UIHomePagePortlet .HomePortletContent .SeparatorLine {
@@ -214,12 +210,13 @@
float: left; /* orientation=lt */
float: right; /* orientation=rt */
padding: 0px 4px 0px;
- background: url('DefaultSkin/background/HomePagePortlet.gif') no-repeat left -675px; /* orientation=lt */
- background: url('DefaultSkin/background/HomePagePortlet-rt.gif') no-repeat right -675px; /* orientation=rt */
+ background: none; /* orientation=lt */
+ background: none; /* orientation=rt */
}
.UIHomePagePortlet .HomePortletContent .AccountInfos {
padding-top: 8px;
+ display: none;
}
.UIHomePagePortlet .AccountInfos .Lable {
@@ -244,8 +241,42 @@
color: #454e56;
line-height: 40px;
font-weight: bold;
+ text-align:right;
+ width:61%;
}
+.UIHomePagePortlet .HomePortletContent .Username div {
+ position: absolute;
+ left: 55px;
+}
+
+.UIHomePagePortlet .HomePortletContent .Passwords div {
+ position: absolute;
+ left: 55px;
+ top: 16px;
+}
+
+.UIHomePagePortlet .HomePortletContent .Username span{
+ position: absolute;
+ left: 107px;
+}
+
+.UIHomePagePortlet .HomePortletContent .Passwords span {
+ position: absolute;
+ left: 107px;
+ top: 16px;
+}
+
+.UIHomePagePortlet .HomePortletContent .Username {
+ position: relative;
+ width: 61%;
+}
+
+.UIHomePagePortlet .HomePortletContent .Passwords {
+ position: relative;
+ width: 61%;
+}
+
.UIHomePagePortlet .ClearBoth {
clear: both;
}
14 years, 9 months
gatein SVN: r2372 - in portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization: picketlink-idm/examples and 1 other directory.
by do-not-reply@jboss.org
Author: bdaw
Date: 2010-03-26 09:48:01 -0400 (Fri, 26 Mar 2010)
New Revision: 2372
Added:
portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/acme-openldap.ldif
portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/initial-openldap.ldif
portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-acme-config.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-config.xml
Modified:
portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml
Log:
- GTNPORTAL-989 - example configuration files for OpenLDAP
Modified: portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml 2010-03-26 12:40:57 UTC (rev 2371)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/idm-configuration.xml 2010-03-26 13:48:01 UTC (rev 2372)
@@ -65,13 +65,19 @@
<!--Sample LDAP config-->
<!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml</value>-->
- <!--ACME LDAP Example-->
+ <!--Read Only "ACME" LDAP Example-->
<!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-acme-config.xml</value>-->
+ <!--OpenLDAP LDAP config-->
+ <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-config.xml</value>-->
+
+ <!--OpenLDAP ReadOnly "ACME" LDAP Example-->
+ <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-acme-config.xml</value>-->
+
<!--MSAD LDAP Example-->
<!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-msad-config.xml</value>-->
- <!--MSAD Read Only LDAP Example-->
+ <!--MSAD Read Only "ACME" LDAP Example-->
<!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-msad-readonly-config.xml</value>-->
</value-param>
Copied: portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/acme-openldap.ldif (from rev 2370, portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/acme.ldif)
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/acme-openldap.ldif (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/acme-openldap.ldif 2010-03-26 13:48:01 UTC (rev 2372)
@@ -0,0 +1,160 @@
+dn: o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: dcObject
+objectclass: organization
+o: acme
+dc: acme
+
+dn: ou=placeholder,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: organizationalUnit
+ou: placeholder
+description: entry used to satisfy schmema restrictions for required member attribute in groupOfNames objectClass
+
+dn: ou=People,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: organizationalUnit
+ou: People
+
+dn: uid=admin,ou=People,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: inetOrgPerson
+objectclass: person
+uid: admin
+cn: Administrator
+sn: Duke
+userPassword: admin
+mail: admin(a)acme.example.com
+
+dn: uid=user,ou=People,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: inetOrgPerson
+objectclass: person
+uid: user
+cn: User
+sn: Sample
+userPassword: user
+mail: user(a)acme.example.com
+
+dn: uid=jduke,ou=People,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: inetOrgPerson
+objectclass: person
+uid: jduke
+cn: Java
+sn: Duke
+userPassword: theduke
+mail: jduke(a)acme.example.com
+
+dn: uid=jduke1,ou=People,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: inetOrgPerson
+objectclass: person
+uid: jduke1
+cn: Java 1
+sn: Duke1
+userPassword: theduke
+mail: jduke1(a)acme.example.com
+
+
+dn: uid=jduke2,ou=People,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: inetOrgPerson
+objectclass: person
+uid: jduke2
+cn: Java 2
+sn: Duke2
+userPassword: theduke
+mail: jduke2(a)acme.example.com
+
+dn: uid=jduke3,ou=People,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: inetOrgPerson
+objectclass: person
+uid: jduke3
+cn: Java 3
+sn: Duke3
+userPassword: theduke
+mail: jduke3(a)acme.example.com
+
+dn: uid=jduke4,ou=People,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: inetOrgPerson
+objectclass: person
+uid: jduke4
+cn: Java 4
+sn: Duke4
+userPassword: theduke
+mail: jduke4(a)acme.example.com
+
+dn: ou=Roles,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: organizationalUnit
+ou: Roles
+
+dn: cn=admins,ou=Roles,o=acme,dc=my-domain,dc=com
+objectClass: top
+objectClass: groupOfNames
+cn: admins
+description: Portal admin role
+member: uid=admin,ou=People,o=acme,dc=my-domain,dc=com
+
+dn: cn=employees,ou=Roles,o=acme,dc=my-domain,dc=com
+objectClass: top
+objectClass: groupOfNames
+cn: employees
+description: ACME Employees
+member: uid=admin,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=user,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=jduke,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=jduke1,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=jduke2,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=jduke3,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=jduke4,ou=People,o=acme,dc=my-domain,dc=com
+
+dn: cn=echo,ou=Roles,o=acme,dc=my-domain,dc=com
+objectClass: top
+objectClass: groupOfNames
+cn: echo
+description: Echo role
+member: uid=jduke1,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=jduke3,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=jduke4,ou=People,o=acme,dc=my-domain,dc=com
+
+dn: cn=echo1,ou=Roles,o=acme,dc=my-domain,dc=com
+objectClass: top
+objectClass: groupOfNames
+cn: echo1
+description: Echo1 role
+member: uid=jduke2,ou=People,o=acme,dc=my-domain,dc=com
+member: uid=jduke3,ou=People,o=acme,dc=my-domain,dc=com
+
+dn: cn=theduke,ou=Roles,o=acme,dc=my-domain,dc=com
+objectClass: groupOfNames
+objectClass: top
+cn: theduke
+description: TheDuke role
+member: uid=jduke,ou=People,o=acme,dc=my-domain,dc=com
+
+dn: ou=OrganizationUnits,o=acme,dc=my-domain,dc=com
+objectclass: top
+objectclass: organizationalUnit
+ou: OrganizationUnits
+
+dn: cn=foo,ou=OrganizationUnits,o=acme,dc=my-domain,dc=com
+objectClass: top
+objectClass: groupOfNames
+cn: foo
+description: Foo organization unit
+member: uid=admin,ou=People,o=acme,dc=my-domain,dc=com
+
+
+
+dn: cn=bar,ou=OrganizationUnits,o=acme,dc=my-domain,dc=com
+objectClass: top
+objectClass: groupOfNames
+cn: bar
+description: Bar organization
+member: uid=admin,ou=People,o=acme,dc=my-domain,dc=com
+
+
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/initial-openldap.ldif
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/initial-openldap.ldif (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/initial-openldap.ldif 2010-03-26 13:48:01 UTC (rev 2372)
@@ -0,0 +1,16 @@
+dn: o=gatein,dc=my-domain,dc=com
+objectclass: top
+objectclass: organization
+o: gatein
+
+dn: o=portal,o=gatein,dc=my-domain,dc=com
+objectclass: top
+objectclass: organization
+o: portal
+
+dn: ou=placeholder,o=portal,o=gatein,dc=my-domain,dc=com
+objectclass: top
+objectclass: organizationalUnit
+ou: placeholder
+description: entry used to satisfy schmema restrictions for required member attribute in groupOfNames objectClass
+
Modified: portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml 2010-03-26 12:40:57 UTC (rev 2371)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml 2010-03-26 13:48:01 UTC (rev 2372)
@@ -152,6 +152,31 @@
<credential-type>PASSWORD</credential-type>
</credentials>
<attributes>
+ <attribute>
+ <name>firstName</name>
+ <mapping>cn</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ </attribute>
+ <attribute>
+ <name>lastName</name>
+ <mapping>sn</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ </attribute>
+ <attribute>
+ <name>email</name>
+ <mapping>mail</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ <isUnique>true</isUnique>
+ </attribute>
</attributes>
<options>
<option>
Copied: portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-acme-config.xml (from rev 2370, portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-acme-config.xml)
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-acme-config.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-acme-config.xml 2010-03-26 13:48:01 UTC (rev 2372)
@@ -0,0 +1,393 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<jboss-identity xmlns="urn:picketlink:idm:config:v1_0_0_ga"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:picketlink:idm:config:v1_0_0_ga identity-config.xsd">
+ <realms>
+ <realm>
+ <id>idm_realm_sample-portal</id>
+ <repository-id-ref>DefaultPortalRepository</repository-id-ref>
+ <identity-type-mappings>
+ <user-mapping>USER</user-mapping>
+ </identity-type-mappings>
+ <options>
+ <option>
+ <name>cache.providerRegistryName</name>
+ <value>apiCacheProvider</value>
+ </option>
+ </options>
+ </realm>
+ <realm>
+ <id>idm_realm</id>
+ <repository-id-ref>PortalRepository</repository-id-ref>
+ <identity-type-mappings>
+ <user-mapping>USER</user-mapping>
+ </identity-type-mappings>
+ <options>
+ <option>
+ <name>template</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>cache.providerRegistryName</name>
+ <value>apiCacheProvider</value>
+ </option>
+ </options>
+ </realm>
+ </realms>
+ <repositories>
+ <repository>
+ <id>PortalRepository</id>
+ <class>org.picketlink.idm.impl.repository.FallbackIdentityStoreRepository</class>
+ <external-config/>
+ <default-identity-store-id>HibernateStore</default-identity-store-id>
+ <default-attribute-store-id>HibernateStore</default-attribute-store-id>
+ <identity-store-mappings>
+ <identity-store-mapping>
+ <identity-store-id>PortalLDAPStore</identity-store-id>
+ <identity-object-types>
+ <identity-object-type>USER</identity-object-type>
+ <identity-object-type>acme_roles_type</identity-object-type>
+ <identity-object-type>acme_ou_type</identity-object-type>
+ </identity-object-types>
+ <options>
+ <option>
+ <name>readOnly</name>
+ <value>true</value>
+ </option>
+ </options>
+ </identity-store-mapping>
+ </identity-store-mappings>
+ <options>
+ <option>
+ <name>allowNotDefinedAttributes</name>
+ <value>true</value>
+ </option>
+ </options>
+ </repository>
+ <repository>
+ <id>DefaultPortalRepository</id>
+ <class>org.picketlink.idm.impl.repository.WrapperIdentityStoreRepository</class>
+ <external-config/>
+ <default-identity-store-id>HibernateStore</default-identity-store-id>
+ <default-attribute-store-id>HibernateStore</default-attribute-store-id>
+ </repository>
+ </repositories>
+ <stores>
+ <attribute-stores/>
+ <identity-stores>
+ <identity-store>
+ <id>HibernateStore</id>
+ <class>org.picketlink.idm.impl.store.hibernate.HibernateIdentityStoreImpl</class>
+ <external-config/>
+ <supported-relationship-types>
+ <relationship-type>JBOSS_IDENTITY_MEMBERSHIP</relationship-type>
+ <relationship-type>JBOSS_IDENTITY_ROLE</relationship-type>
+ </supported-relationship-types>
+ <supported-identity-object-types>
+ <identity-object-type>
+ <name>USER</name>
+ <relationships/>
+ <credentials>
+ <credential-type>PASSWORD</credential-type>
+ </credentials>
+ <attributes/>
+ <options/>
+ </identity-object-type>
+ </supported-identity-object-types>
+ <options>
+ <option>
+ <name>hibernateSessionFactoryRegistryName</name>
+ <value>hibernateSessionFactory</value>
+ </option>
+ <option>
+ <name>populateRelationshipTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>populateIdentityObjectTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowNotDefinedIdentityObjectTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowNotDefinedAttributes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>isRealmAware</name>
+ <value>true</value>
+ </option>
+ </options>
+ </identity-store>
+ <identity-store>
+ <id>PortalLDAPStore</id>
+ <class>org.picketlink.idm.impl.store.ldap.LDAPIdentityStoreImpl</class>
+ <external-config/>
+ <supported-relationship-types>
+ <relationship-type>JBOSS_IDENTITY_MEMBERSHIP</relationship-type>
+ </supported-relationship-types>
+ <supported-identity-object-types>
+ <identity-object-type>
+ <name>USER</name>
+ <relationships/>
+ <credentials>
+ <credential-type>PASSWORD</credential-type>
+ </credentials>
+ <attributes>
+ <attribute>
+ <name>firstName</name>
+ <mapping>cn</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ </attribute>
+ <attribute>
+ <name>lastName</name>
+ <mapping>sn</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ </attribute>
+ <attribute>
+ <name>email</name>
+ <mapping>mail</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ <isUnique>true</isUnique>
+ </attribute>
+ </attributes>
+ <options>
+ <option>
+ <name>idAttributeName</name>
+ <value>uid</value>
+ </option>
+ <option>
+ <name>passwordAttributeName</name>
+ <value>userPassword</value>
+ </option>
+ <option>
+ <name>ctxDNs</name>
+ <value>ou=People,o=acme,dc=my-domain,dc=com</value>
+ </option>
+ <option>
+ <name>allowCreateEntry</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>createEntryAttributeValues</name>
+ <value>objectClass=top</value>
+ <value>objectClass=inetOrgPerson</value>
+ <value>sn= </value>
+ <value>cn= </value>
+ </option>
+ </options>
+ </identity-object-type>
+ <identity-object-type>
+ <name>acme_roles_type</name>
+ <relationships>
+ <relationship>
+ <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+ <identity-object-type-ref>USER</identity-object-type-ref>
+ </relationship>
+ <relationship>
+ <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+ <identity-object-type-ref>acme_roles_type</identity-object-type-ref>
+ </relationship>
+ </relationships>
+ <credentials/>
+ <attributes>
+ <attribute>
+ <name>label</name>
+ <mapping>cn</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>true</isReadOnly>
+ </attribute>
+ <attribute>
+ <name>description</name>
+ <mapping>description</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ </attribute>
+ </attributes>
+ <options>
+ <option>
+ <name>idAttributeName</name>
+ <value>cn</value>
+ </option>
+ <option>
+ <name>ctxDNs</name>
+ <value>ou=Roles,o=acme,dc=my-domain,dc=com</value>
+ </option>
+ <!--<option>-->
+ <!--<name>entrySearchFilter</name>-->
+ <!--<value></value>-->
+ <!--</option>-->
+ <option>
+ <name>parentMembershipAttributePlaceholder</name>
+ <value>ou=placeholder,o=acme,dc=my-domain,dc=com</value>
+ </option>
+ <option>
+ <name>allowCreateEntry</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>parentMembershipAttributeName</name>
+ <value>member</value>
+ </option>
+ <option>
+ <name>isParentMembershipAttributeDN</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowEmptyMemberships</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>createEntryAttributeValues</name>
+ <value>objectClass=top</value>
+ <value>objectClass=groupOfNames</value>
+ <value>member=ou=placeholder,o=acme,dc=my-domain,dc=com</value>
+ </option>
+ </options>
+ </identity-object-type>
+ <identity-object-type>
+ <name>acme_ou_type</name>
+ <relationships>
+ <relationship>
+ <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+ <identity-object-type-ref>USER</identity-object-type-ref>
+ </relationship>
+ <relationship>
+ <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+ <identity-object-type-ref>acme_ou_type</identity-object-type-ref>
+ </relationship>
+ </relationships>
+ <credentials/>
+ <attributes>
+ <attribute>
+ <name>label</name>
+ <mapping>cn</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>true</isReadOnly>
+ </attribute>
+ <attribute>
+ <name>description</name>
+ <mapping>description</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ </attribute>
+ </attributes>
+ <options>
+ <option>
+ <name>idAttributeName</name>
+ <value>cn</value>
+ </option>
+ <option>
+ <name>ctxDNs</name>
+ <value>ou=OrganizationUnits,o=acme,dc=my-domain,dc=com</value>
+ </option>
+ <!--<option>-->
+ <!--<name>entrySearchFilter</name>-->
+ <!--<value></value>-->
+ <!--</option>-->
+
+ <option>
+ <name>allowCreateEntry</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>parentMembershipAttributeName</name>
+ <value>member</value>
+ </option>
+ <option>
+ <name>parentMembershipAttributePlaceholder</name>
+ <value>ou=placeholder,o=acme,dc=my-domain,dc=com</value>
+ </option>
+ <option>
+ <name>isParentMembershipAttributeDN</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowEmptyMemberships</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>createEntryAttributeValues</name>
+ <value>objectClass=top</value>
+ <value>objectClass=groupOfNames</value>
+ <value>member=ou=placeholder,o=acme,dc=my-domain,dc=com</value>
+ </option>
+ </options>
+ </identity-object-type>
+ </supported-identity-object-types>
+ <options>
+ <option>
+ <name>providerURL</name>
+ <value>ldap://localhost:1389</value>
+ </option>
+ <option>
+ <name>adminDN</name>
+ <value>cn=Manager,dc=my-domain,dc=com</value>
+ </option>
+ <option>
+ <name>adminPassword</name>
+ <value>secret</value>
+ </option>
+ <option>
+ <name>searchTimeLimit</name>
+ <value>10000</value>
+ </option>
+ <option>
+ <name>createMissingContexts</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>sortExtensionSupported</name>
+ <value>false</value>
+ </option>
+ </options>
+ </identity-store>
+ </identity-stores>
+ </stores>
+ <options>
+ <option>
+ <name>defaultTemplate</name>
+ <value>idm_realm</value>
+ </option>
+ </options>
+</jboss-identity>
\ No newline at end of file
Copied: portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-config.xml (from rev 2370, portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml)
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-config.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-config.xml 2010-03-26 13:48:01 UTC (rev 2372)
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<jboss-identity xmlns="urn:picketlink:idm:config:v1_0_0_ga"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:picketlink:idm:config:v1_0_0_ga identity-config.xsd">
+ <realms>
+ <realm>
+ <id>idm_realm_sample-portal</id>
+ <repository-id-ref>DefaultPortalRepository</repository-id-ref>
+ <identity-type-mappings>
+ <user-mapping>USER</user-mapping>
+ </identity-type-mappings>
+ <options>
+ <option>
+ <name>cache.providerRegistryName</name>
+ <value>apiCacheProvider</value>
+ </option>
+ </options>
+ </realm>
+ <realm>
+ <id>idm_realm</id>
+ <repository-id-ref>PortalRepository</repository-id-ref>
+ <identity-type-mappings>
+ <user-mapping>USER</user-mapping>
+ </identity-type-mappings>
+ <options>
+ <option>
+ <name>template</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>cache.providerRegistryName</name>
+ <value>apiCacheProvider</value>
+ </option>
+ </options>
+ </realm>
+ </realms>
+ <repositories>
+ <repository>
+ <id>PortalRepository</id>
+ <class>org.picketlink.idm.impl.repository.FallbackIdentityStoreRepository</class>
+ <external-config/>
+ <default-identity-store-id>HibernateStore</default-identity-store-id>
+ <default-attribute-store-id>HibernateStore</default-attribute-store-id>
+ <identity-store-mappings>
+ <identity-store-mapping>
+ <identity-store-id>PortalLDAPStore</identity-store-id>
+ <identity-object-types>
+ <identity-object-type>USER</identity-object-type>
+ <identity-object-type>platform_type</identity-object-type>
+ <identity-object-type>organization_type</identity-object-type>
+ </identity-object-types>
+ <options/>
+ </identity-store-mapping>
+ </identity-store-mappings>
+ <options>
+ <option>
+ <name>allowNotDefinedAttributes</name>
+ <value>true</value>
+ </option>
+ </options>
+ </repository>
+ <repository>
+ <id>DefaultPortalRepository</id>
+ <class>org.picketlink.idm.impl.repository.WrapperIdentityStoreRepository</class>
+ <external-config/>
+ <default-identity-store-id>HibernateStore</default-identity-store-id>
+ <default-attribute-store-id>HibernateStore</default-attribute-store-id>
+ </repository>
+ </repositories>
+ <stores>
+ <attribute-stores/>
+ <identity-stores>
+ <identity-store>
+ <id>HibernateStore</id>
+ <class>org.picketlink.idm.impl.store.hibernate.HibernateIdentityStoreImpl</class>
+ <external-config/>
+ <supported-relationship-types>
+ <relationship-type>JBOSS_IDENTITY_MEMBERSHIP</relationship-type>
+ <relationship-type>JBOSS_IDENTITY_ROLE</relationship-type>
+ </supported-relationship-types>
+ <supported-identity-object-types>
+ <identity-object-type>
+ <name>USER</name>
+ <relationships/>
+ <credentials>
+ <credential-type>PASSWORD</credential-type>
+ </credentials>
+ <attributes/>
+ <options/>
+ </identity-object-type>
+ </supported-identity-object-types>
+ <options>
+ <option>
+ <name>hibernateSessionFactoryRegistryName</name>
+ <value>hibernateSessionFactory</value>
+ </option>
+ <option>
+ <name>populateRelationshipTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>populateIdentityObjectTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowNotDefinedIdentityObjectTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowNotDefinedAttributes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>isRealmAware</name>
+ <value>true</value>
+ </option>
+ </options>
+ </identity-store>
+ <identity-store>
+ <id>PortalLDAPStore</id>
+ <class>org.picketlink.idm.impl.store.ldap.LDAPIdentityStoreImpl</class>
+ <external-config/>
+ <supported-relationship-types>
+ <relationship-type>JBOSS_IDENTITY_MEMBERSHIP</relationship-type>
+ </supported-relationship-types>
+ <supported-identity-object-types>
+ <identity-object-type>
+ <name>USER</name>
+ <relationships/>
+ <credentials>
+ <credential-type>PASSWORD</credential-type>
+ </credentials>
+ <attributes>
+ <attribute>
+ <name>firstName</name>
+ <mapping>cn</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ </attribute>
+ <attribute>
+ <name>lastName</name>
+ <mapping>sn</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ </attribute>
+ <attribute>
+ <name>email</name>
+ <mapping>mail</mapping>
+ <type>text</type>
+ <isRequired>false</isRequired>
+ <isMultivalued>false</isMultivalued>
+ <isReadOnly>false</isReadOnly>
+ <isUnique>true</isUnique>
+ </attribute>
+ </attributes>
+ <options>
+ <option>
+ <name>idAttributeName</name>
+ <value>uid</value>
+ </option>
+ <option>
+ <name>passwordAttributeName</name>
+ <value>userPassword</value>
+ </option>
+ <option>
+ <name>ctxDNs</name>
+ <value>ou=People,o=portal,o=gatein,dc=my-domain,dc=com</value>
+ </option>
+ <option>
+ <name>allowCreateEntry</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>createEntryAttributeValues</name>
+ <value>objectClass=top</value>
+ <value>objectClass=inetOrgPerson</value>
+ <value>sn= </value>
+ <value>cn= </value>
+ </option>
+ </options>
+ </identity-object-type>
+ <identity-object-type>
+ <name>platform_type</name>
+ <relationships>
+ <relationship>
+ <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+ <identity-object-type-ref>USER</identity-object-type-ref>
+ </relationship>
+ <relationship>
+ <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+ <identity-object-type-ref>platform_type</identity-object-type-ref>
+ </relationship>
+ </relationships>
+ <credentials/>
+ <attributes/>
+ <options>
+ <option>
+ <name>idAttributeName</name>
+ <value>cn</value>
+ </option>
+ <option>
+ <name>ctxDNs</name>
+ <value>ou=Platform,o=portal,o=gatein,dc=my-domain,dc=com</value>
+ </option>
+ <!--<option>-->
+ <!--<name>entrySearchFilter</name>-->
+ <!--<value></value>-->
+ <!--</option>-->
+ <option>
+ <name>allowCreateEntry</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>parentMembershipAttributeName</name>
+ <value>member</value>
+ </option>
+ <option>
+ <name>parentMembershipAttributePlaceholder</name>
+ <value>ou=placeholder,o=portal,o=gatein,dc=my-domain,dc=com</value>
+ </option>
+ <option>
+ <name>isParentMembershipAttributeDN</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowEmptyMemberships</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>createEntryAttributeValues</name>
+ <value>objectClass=top</value>
+ <value>objectClass=groupOfNames</value>
+ <value>member=ou=placeholder,o=portal,o=gatein,dc=my-domain,dc=com</value>
+ </option>
+ </options>
+ </identity-object-type>
+ <identity-object-type>
+ <name>organization_type</name>
+ <relationships>
+ <relationship>
+ <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+ <identity-object-type-ref>USER</identity-object-type-ref>
+ </relationship>
+ <relationship>
+ <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+ <identity-object-type-ref>organization_type</identity-object-type-ref>
+ </relationship>
+ </relationships>
+ <credentials/>
+ <attributes/>
+ <options>
+ <option>
+ <name>idAttributeName</name>
+ <value>cn</value>
+ </option>
+ <option>
+ <name>ctxDNs</name>
+ <value>ou=Organization,o=portal,o=gatein,dc=my-domain,dc=com</value>
+ </option>
+ <!--<option>-->
+ <!--<name>entrySearchFilter</name>-->
+ <!--<value></value>-->
+ <!--</option>-->
+ <option>
+ <name>allowCreateEntry</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>parentMembershipAttributeName</name>
+ <value>member</value>
+ </option>
+ <option>
+ <name>parentMembershipAttributePlaceholder</name>
+ <value>ou=placeholder,o=portal,o=gatein,dc=my-domain,dc=com</value>
+ </option>
+ <option>
+ <name>isParentMembershipAttributeDN</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowEmptyMemberships</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>createEntryAttributeValues</name>
+ <value>objectClass=top</value>
+ <value>objectClass=groupOfNames</value>
+ <value>member=ou=placeholder,o=portal,o=gatein,dc=my-domain,dc=com</value>
+ </option>
+ </options>
+ </identity-object-type>
+ </supported-identity-object-types>
+ <options>
+ <option>
+ <name>providerURL</name>
+ <value>ldap://localhost:1389</value>
+ </option>
+ <option>
+ <name>adminDN</name>
+ <value>cn=Manager,dc=my-domain,dc=com</value>
+ </option>
+ <option>
+ <name>adminPassword</name>
+ <value>secret</value>
+ </option>
+ <option>
+ <name>searchTimeLimit</name>
+ <value>10000</value>
+ </option>
+ <option>
+ <name>createMissingContexts</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>sortExtensionSupported</name>
+ <value>false</value>
+ </option>
+ </options>
+ </identity-store>
+ </identity-stores>
+ </stores>
+ <options>
+ <option>
+ <name>defaultTemplate</name>
+ <value>idm_realm</value>
+ </option>
+ </options>
+</jboss-identity>
\ No newline at end of file
14 years, 9 months