Oracle OAM 实现Angular JS 前端应用SSO单点登录

背景:

随着前端框架发展,很多前端应用都采用Angular JS 去实现前端门户,如何利用OAM实现前端门户的单点就是一个问题了,众所周知,如果是ADF开发的程序或者是Oracle的产品需要实现SSO,相对来说简单很多,下面是用OAM 实现Angular JS 前端应用SSO单点登录的实现思路及步骤

实现思路

1、新建一个ADF应用,且启用安全性,该ADF应用中,构建一个servlet,并通过OHS进行方向代理,请求地址如: OHS:80/security/authguard;

2、通过OAM,配置 /Angular , /security 的保护资源;

3、/security/authguard 的作用是通过request.getHeader(“OAM_REMOTE_USER”)获取用户,并获取一个可供Angular应用接口使用的token,并返回一个json对象:

4、在Angular前端应用的的所有路由,都需要经过一个全局的路由守卫,该路由守卫会请求 /security/authguard 地址,尝试获取json对象,如果取到了token和username,则正常调用接口,否则跳转到登录页面

实现步骤

1、创建一个ADF应用,新建AuthguardServlet类,获取token和username,关键代码如下

Oracle OAM 实现Angular JS 前端应用SSO单点登录

2、ADF应用程序启用安全性BASIC认证,并修改web.xml配置文件如下图

Oracle OAM 实现Angular JS 前端应用SSO单点登录

3、Servlet返回一个JSON对象,如:

{

“code”: 200,

“data”: {

“userCode”: “zhangsan”,

“roles”: [“角色一”, “角色二”, “角色三”],

“userDisplayName”: “张三”

},

“token”: “hUIDiwIOVHsqQvisMgodKJuaQNWLvNFfJq”,

“username”: “zhangsan”

}

4、通过OAM,配置 前端应用(/Angular) 和Servlet(/security/authguard) 的资源保护 如下图;

Oracle OAM 实现Angular JS 前端应用SSO单点登录

5、在Angular前端应用的的所有路由,都需要经过一个全局的路由守卫,该路由守卫会请求 /security/authguard 地址,尝试获取json对象,如果取到了token和username,则正常调用接口,否则跳转到登录页面,实现代码如下

Oracle OAM 实现Angular JS 前端应用SSO单点登录

如此就实现Angular JS 前端应用SSO单点登录。

优点:依旧使用OAM的保护页,不需要额外的技术来考虑静态页到Oracle产品的单点登录实现。

有兴趣的发送邮箱到[email protected],提供在线技术支持