1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 统一身份管理平台IAM单点登录流程及第三方接口设计方案

统一身份管理平台IAM单点登录流程及第三方接口设计方案

时间:2020-06-30 04:09:48

相关推荐

统一身份管理平台IAM单点登录流程及第三方接口设计方案

#统一身份管理平台IAM

很多企业都有多个办公系统,账号、密码、角色、权限等均需要单独设置且不能实现统一管理。

统一身份认证管理系统IAM,我认为有以下三个优点:

建立统一的用户管理、身份配给和身份认证体系,实现用户身份和权限的动态同步。实现全部办公系统(应用)的单点登录(B/S架构)或密码认证登录(C/S架构)。加强信息安全预警和审计,提高系统可用性、安全性和用户使用便携度。

即:一个账号打通企业内部多个办公系统,覆盖多场景管控,支持部门,角色,人员维度授权。

#统一身份管理平台IAM单点登录流程图(B/S架构)

使用范围:需要实现单点登录,使用统一身份管理平台的登录页面,并能发送https请求的第三方系统,简单总结有如下四个步骤:

authorize接口,请求用户授权,完成后跳转第三方系统。authorization_code接口,根据code获取授权Token。getUserInfo接口,根据Token获取用户信息。logout接口,注销登录。

本文将介绍统一身份认证平台IAM常用单点登录第三方接口设计。

#1、请求用户授权,完成后跳转第三方系统,网页设计

网页接口说明:

处理逻辑1、判断参数;

2、验证client_id是否有效;

3、校验redirect_uri;

4、显示认证授权页面;

5、验证身份后页面跳转至redirect_uri并附有参数授权码(写入Cookie中)。返回值以上文中的回调地址为百度为例,授权完成后会跳转至/?code=83953d36e2ae7c8903c6b589c8998670&state=xxxxx,携带参数code和state。

实际操作:

WEB网页登录授权界面(GET请求)

登录成功跳转界面,携带参数code和state

#2、根据code获取Token授权第三方接口设计

通过上文code即可以获取access_token和refresh_token,当access_token过期时,可以通过refresh_token重新获取新的access_token,保持登陆状态。

接口说明:

处理逻辑1、验证参数有效性;

2、验证授权码有效性及范围;

3、根据以上判断、验证及认证结果返回JSON数据。返回值类型JSON,正确返回值:

{

"access_token":"5e717f5eda086269706a407e3764092a",

"refresh_token":"fb6e93b627a1a93679251f605097503c",

"uid":"0311135809626-B457-4E410EFEB",

"expires_in":1500

}

获取Token-POST请求接口示例代码:

import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpConnectionParams;import org.apache.http.util.EntityUtils;public class getToken {public static String getToken(String url){BasicHttpParams http = new BasicHttpParams();//设置请求超时1秒钟HttpConnectionParams.setConnectionTimeout(http,1000);//设置等待数据超时时间1秒钟HttpConnectionParams.setSoTimeout(http,1000);HttpClient client = new DefaultHttpClient(http);String jsonresult = "";try {//Http Post请求HttpPost post = new HttpPost(url);HttpResponse response = client.execute(post);//获取返回参数HttpEntity entity =response.getEntity();jsonresult = EntityUtils.toString(entity,"utf-8");}catch (Exception ex){ex.printStackTrace();}finally {client.getConnectionManager().shutdown();}return jsonresult;}public static void main(String[] args) {String url = ":8080/idp/oauth2/getToken?client_id=SE&grant_type=authorization_code&code=dc605a7a6389b0898f653b4895359071&client_secret=6f369937851b4669ad66b41257b9a902";//输出返回JSON字符串System.out.println(getToken(url));}}

#3、根据Token获取用户信息第三方接口设计

通过上文获取的access_token即可访问用户接口,获取用户信息,实现该用户在第三方系统(应用)上的免密登录。

接口说明:

处理逻辑1、验证参数有效性;

2、根据应用配置的属性权限列表,查询用户信息返回;

3、根据以上判断、验证及认证结果返回JSON数据。返回值

类型JSON字符串,正确返回值:

{

"orgNamePath":"/人事处",

"spRoleList":[],

"uid":"0311135809626-B457-4E410EFEB",

"mail":"liming@",

"orgCodePath":"W000001",

"displayName":"李明",

"loginName":"E012345678",

"mobile":"13999999999",

"orgNumber":"P00000000",

"employeeNumber":null

}

获取用户信息-GET请求接口示例代码:

import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.params.BasicHttpParams;import org.apache.http.params.HttpConnectionParams;import org.apache.http.util.EntityUtils;public class getUserInfo {public static String getToken(String url){BasicHttpParams http = new BasicHttpParams();//设置请求超时1秒钟HttpConnectionParams.setConnectionTimeout(http,1000);//设置等待数据超时时间1秒钟HttpConnectionParams.setSoTimeout(http,1000);HttpClient client = new DefaultHttpClient(http);String jsonresult = "";try {//Http Get请求HttpGet get = new HttpGet(url);HttpResponse response = client.execute(get);//获取返回参数HttpEntity entity =response.getEntity();jsonresult = EntityUtils.toString(entity,"utf-8");}catch (Exception ex){ex.printStackTrace();}finally {client.getConnectionManager().shutdown();}return jsonresult;}public static void main(String[] args) {String url = ":8080/idp/oauth2/getUserInfo?access_token=xxxxx&client_id=xxxxx";//输出返回JSON字符串System.out.println(getToken(url));}}

#4、Logout注销登录,完成后跳转,网页设计

第三方应用系统请求IAM认证中心全局退出URL,认证中心销毁用户全局会话,并调用该应用销毁会话URL,该地址需调用回收授权接口实现清除当前oauth票据及销毁应用本地会话的功能。

流程图如下:

网页接口说明:

处理逻辑1、判断参数;

2、根据以上判断、验证及认证结果返回JSON数据。返回值以上文中的回调地址为百度为例,注销后会跳转至,如果跳转为false,则会停留到IAM注销页面:8080/idp/http/logout.do

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。