背景
OAM在登录出错时,会跳到OAM谬误页面,如图
该页面是OAM的规范谬误页面,十分的不敌对,当用户面对这么一个页面时,基本不晓得如何操作。上面介绍如何自定义该页面
实现
- 下载oam-server.ear
登录OAM后盾,在目录$MIDDLEWARE_HOME/Oracle_IAM1/oam/server/apps
目录下找到oam-server.ear,将其下载到本地
MIDDLEWARE_HOME是中间件目录,比方/data/fmwhome/Oracle/Middleware/Oracle_IAM1/oam/server/apps
- 批改页面
用解压软件(如7-zip等)将oam-server.ear解压到目录下,如果没有解压软件间接用jar命令也能够解压
jar -xvf oam-server.ear
解压后,会有一个ngsso-web.war
文件,以同样的办法将该文件解压进去,在门路ngsso-web/pages
目录下,该目录蕴含了OAM所有规范的页面,以jsp形式提供,其中页面defaultservererror.jsp
就是那个谬误页面,所以只需批改该页面即可。页面源码如下
<%@ page language="java" contentType="text/html" %><%@ page isErrorPage="true" import="java.io.*,oracle.security.am.engines.sso.ServerMsg" %><%@page import="oracle.security.am.common.utilities.constant.GenericConstants" %><%@page import="java.util.*, java.text.MessageFormat, oracle.security.am.engines.sso.ServerMsg"%><%@page import="oracle.security.am.common.utilities.css.XSSUtil" %><%@ include file="locale-ctx.jsp" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%!public void jspInit(){ oracle.security.am.pbl.transport.http.proxy.ServletCatalog.registerServlet("/pages/defaultservererror.jsp", this);}%><%// if proxy loading, return immediatelyif ("true".equals(request.getParameter("proxyloading"))) return; //Set the Expires and Cache Control Headers response.setHeader("Cache-Control", "no-cache, no-store"); response.setHeader("Pragma", "no-cache"); response.setHeader("Expires", "0"); //Added for Combating ClickJacking XSSUtil.addHeader(response, ""); response.setContentType("text/html; charset=UTF-8"); final String appName = request.getContextPath(); //initializing the messageBundle first java.util.Locale myLocale = request.getLocale(); String defaultResourceBundle = "oracle.security.am.engines.sso.ServerMsg"; ResourceBundle msgBundle = ResourceBundle.getBundle(defaultResourceBundle, myLocale); final String defaultErrorCode = "OAM-7"; String simpleMessage = msgBundle.getString(defaultErrorCode); // if redirection due to error happened Object errCode = request.getAttribute(GenericConstants.ERROR_CODE); if(errCode != null) { try { simpleMessage = msgBundle.getString(errCode.toString()); } catch(Exception e) { //ignore. simpleMessage will be set to the default } } %><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%=language%>" lang="<%=language%>" dir="<%=textDirection%>"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title><%=msgBundle.getString("SSO")%></title> <link rel='stylesheet' href='<%=request.getContextPath()%>/pages/css/login_page<%=cssPrefix%>.css'/> <!--...省略局部代码--> </div></body></html>
能够将html局部代码批改如下
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta http-equiv="refresh" content="0; URL=重定向的地址" /></head></html>
将该页面重定向到指定页面,之所以倡议重定向而不是间接在jsp上进行批改是因为如果把页面写在jsp中,那么每次更新都须要重新部署oam-server,如果是重定向到自定义页面就比拟灵便。
- 从新打包
只需将批改后的defaultservererror.jsp
文件笼罩ear中的jsp文件即可,能够间接用7-zip软件关上oam-server.ear/ngsso-web.war/pages/
,而后间接将新的jsp文件拖入间接笼罩保留即可,如果没有7-zip能够用以下命令从新打包
jar -uvf ngsso-web.war pages/defaultservererror.jspjar -uvf oam-server.ear ngsso-web.war
- 部署
将oam-server.ear上传到服务器,笼罩原ear文件即可(!!!!肯定要先备份原来的),另外须要删除所有oamserver下的tmp文件夹,位于$DOMAIN_HOME/servers/oam_server1\tmp
- 重启
重启所有oam manager server