当前位置: 首页 > news >正文

统一门户单点登入(C#-OOS机制)

1.非自研系统

通过接口,获取第三方系统token,存redis缓存,设计跳转配置,根据获取的配置路由等用户信息来访问第三方系统免登录。(登入校验在第三方系统实现)
/// <summary>
/// 获取OA登录Token
/// </summary>
/// <returns></returns>
public async Task<string> PostOaAcessTokenAsync(string loginid)
{string resToken = "";var formData = new Dictionary<string, string>{{ "appid", "*************************" },{ "loginid", loginid }};var content = new FormUrlEncodedContent(formData);// 发送POST请求HttpResponseMessage response = await HttpHelper.Client.PostAsync("http://127.0.0.1:8888/ssologin/getToken", content);// 处理响应if (response.IsSuccessStatusCode){// 对成功的响应进行操作var responseContent = await response.Content.ReadAsStringAsync();resToken = responseContent;if (resToken.Contains("has no account:")){throw new UserFriendlyException(UserConst.OA_User_No_Exist);}return resToken;// 域登陆成功}else{// 处理错误throw new UserFriendlyException(UserConst.Login_Error);}}

1.自研系统(OOS机制-单点登录)

通过调整自研系统登入接口参数,添加token字段,由门户创建token,这边按照token值来判断是否不走正常账号密码登入,直接通过token值调用门户接口校验,如果校验成功则质检进入自研系统。
public async Task SSOLoginValidationAsync(string token, Action<UserEntity> userAction = null)
{var user = new UserEntity();// 发送POST请求HttpResponseMessage response = await HttpHelper.Client.PostAsync("http://127.0.0.1/prod-api/auth/get-token/" + token, null);// 处理响应if (response.IsSuccessStatusCode){// 对成功的响应进行操作var responseContent = await response.Content.ReadAsStringAsync();var jObject = JObject.Parse(responseContent);var bo = jObject["succeeded"].Value<bool>();if (bo){string UserCode = jObject["data"].Value<string>();// 工号if (await ExistAsync(UserCode, o => user = o)){if (userAction is not null){userAction.Invoke(user);return;// 域登陆成功}}throw new UserFriendlyException(UserConst.Login_User_No_Exist);}else{// 处理域登陆失败throw new UserFriendlyException(UserConst.Auth_User_Token_Invalid);}}else{// 处理错误throw new UserFriendlyException(UserConst.SSO_Token_Err);}
}

http://www.mrgr.cn/news/83210.html

相关文章:

  • 鸿蒙UI开发——带农历的日期滑动选择弹窗
  • NodeCanvas BT(行为树)
  • Java QueryWrapper groupBy自定义字段,以及List<Map>转List<Entity>
  • 【xLua】xLua-master签名、加密Lua文件
  • 【Linux网络编程】第二十二弹---深入理解 I/O 多路转接之 epoll:系统调用、工作原理、代码演示及应用场景
  • 1688平台商品关键词搜索的多样性与Python爬虫应用实践
  • 04、Redis深入数据结构
  • 使用PVE快速创建虚拟机集群并搭建docker环境
  • https原理
  • 华为C语言编程规范总结
  • WinCC flexible SMART V4 SP2软件安装事项
  • C++中的表达式
  • 高性能网络模式:Reactor 和 Proactor
  • Linux标准IOday3
  • yum换源
  • Spring——自动装配
  • 【python基础——异常BUG】
  • redis:安装部署、升级以及失败回退
  • 【算法】八大排序算法
  • UI自动化测试框架playwright--初级入门
  • 音视频入门基础:MPEG2-PS专题(5)——FFmpeg源码中,解析PS流中的PES流的实现
  • K-means算法在无监督学习中的应用
  • 第四、五章图论和网络爬虫+网络搜索
  • python虚拟环境的使用
  • C# 对象和类型(结构)
  • ArrayList和HashMap区别