WebLogic Portal 提供了許多根據(jù)所有可用的身份驗證提供程序?qū)崿F(xiàn)用戶登錄和身份驗證的方法。下面提供了 9 種身份驗證樣例,可幫助您更好地掌握實現(xiàn)身份驗證時應(yīng)如何選擇。這些內(nèi)容直接取自教程門戶中的樣例。
注意:此主題描述了在已經(jīng)配置 WebLogic Server 使用身份驗證提供程序之后,如何實現(xiàn)身份驗證。有關(guān)設(shè)置身份驗證提供程序的信息,請參閱在門戶開發(fā)中使用多個身份驗證提供程序。
在這些樣例中,門戶 Web 項目的根目錄為 <WEBLOGIC_HOME>/samples/portal/portalApp/tutorial。樣例中的路徑都相對于此根目錄。這些樣例的所有資源和配置都包括在使用 <WEBLOGIC_HOME>/samples/domains/portal/config.xml 服務(wù)器(稱為 portalServer)的教程門戶 Web 項目中。要在您自己的域和門戶 Web 項目中使用這些樣例,請導(dǎo)入或復(fù)制樣例中使用的文件和配置。
本主題包括下列樣例:
源位置:/portlets/login/formLogin/
示例 /WEB-INF/web.xml 指定了機密傳輸保證,/portlets/login/formLogin/login_link.jsp 必須生成 HTTPS URL 才能訪問 redirect.jsp。redirect.jsp 只是重定向回門戶。此示例保留 HTTPS 協(xié)議,但如果只希望 HTTPS 在登錄期間保護您的用戶名/密碼,可以在 redirect.jsp 中切換回 HTTP。
注意:web.xml 中指定的 <form-login-page> URL 會有所不同,這取決于您在 WebLogic Administration Portal 中創(chuàng)建桌面時所運行的門戶是來自 WebLogic Workshop 中 .portal 文件的門戶,還是從數(shù)據(jù)庫裝配的門戶。例如,在運行基于文件的門戶時,如 sample.portal(在開發(fā)過程中)時,可能使用
/samplel.portal?_nfpb=true&_pageLabel=login 指定 <form-login-page> 元素。在運行裝配的門戶(在生產(chǎn)過程中)時,可能使用 /appmanager/samplePortal/sampleDesktop?_nfpb=true&_pageLabel=login 指定 <form-login-page> 元素。
源位置:/portlets/login/clientCert/
下面是使用客戶端證書授權(quán)的步驟:
注意:創(chuàng)建 democlient-cert.p12 的目的是為了進行說明,而不是用于生產(chǎn)。如果選擇使用 openssl 生成自己的證書,可以從位于 www.openssl.org 的網(wǎng)站上獲取說明。
下列步驟用于配置 WebLogic Server,以便正確使用 SSL 和 democlient-cert。
由于基于表單的登錄示例使用 SSL,因此已經(jīng)為服務(wù)器配置了單向 SSL。如果需要為任一服務(wù)器啟用客戶端證書身份驗證,前提條件是必須配置單向 SSL(請參閱位于 http://e-docs.bea.com/wls/docs81/secmanage/ssl.html 上“Managing WebLogic Security”中的“Configuring SSL”。
完成這些步驟之后,可以訪問門戶和 /portlets/login/formLogin/login_link.jsp,以便使用客戶端證書登錄到門戶 Web 應(yīng)用程序。有關(guān)使用登錄鏈接訪問受保護資源的解釋,請參閱基于表單的登錄示例。
源位置:/portlets/login/backingFileLogin/
此示例使用門戶個性化代碼和支持文件來登錄 (/WEB-INF/src/portlet/login/LoginBacking.java)。支持文件還重定向回門戶,以便數(shù)據(jù)庫狀態(tài)不受控件狀態(tài)的影響。
源位置:/portlets/login/pageflowLogin/
此示例使用 Java 頁面流說明如何完成多頁面用戶注冊 Portlet。此示例有四個頁面:
源位置:/portlets/login/ssoLogin/
這是在兩個 Web 應(yīng)用程序之間進行單個登錄的示例。為了進行單個登錄,兩個 Web 應(yīng)用程序必須在 web.xml 中具有匹配的 Cookie 名稱條目。由于默認情況下 WebLogic 將 Cookie 名設(shè)置為相同(如果未為 Web 應(yīng)用程序指定 Cookie 名),因此此行為在默認情況下應(yīng)該起作用。
源位置:/portlets/login/autologin/
注意:此示例使用 Cookie,這是一種不安全的身份驗證方法。
此示例說明如何使用 Cookie 和編碼實現(xiàn)自動登錄。當您登錄并選中“自動登錄”復(fù)選框時,此示例將對您的用戶名和密碼進行編碼。用戶名和密碼將作為 Cookie 添加到響應(yīng)中,并具有一天的有效期。此后,如果您離開并返回門戶,您將會自動登錄,在您退出瀏覽器時也是如此。如果您進行了注銷,將會刪除 Cookie,并且在您重新訪問該門戶時將不再自動登錄。
此示例使用支持文件 (/WEB-INF/src/portlet/login/AutoLoginBacking.java)。
源位置:/portlets/login/basicLogin/
此示例使用的原理與基于表單登錄相同。要使用基本身份驗證,只需在 web.xml 中取消基于 FORM 或 CLIENT-CERT 的身份驗證方法的注釋,然后使用基本身份驗證方法即可??梢允褂么祟I(lǐng)域中的默認用戶之一(如 visitor1/password)進行登錄。
源位置:/portlets/login/loginRequiredPortal/
此示例說明只有在用戶身份驗證之后才能訪問的門戶。要啟用此方法,只需在 web.xml 中為所有 URL 資源添加安全約束條目即可。例如:
<security-constraint> <web-resource-collection> <web-resource-name>login</web-resource-name> <description>整個門戶的安全約束</description> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <description>所有用戶</description> <role-name>AnonymousRole</role-name> </auth-constraint></security-constraint>
源位置:/portlets/login/perimeterLogin/
請參閱下列 WebLogic Server 文檔主題: