求解!单点登录怎么实现的?单点登录(Single Sign On),简称为 SSO , 是目前比较流行的企业业务整合的解决方案之一 。SSO的定义是在多个应用系统中 , 用户只需要登录一次就可以访问所有相互信任的应用系统 。企业应用集成(EAI) 。企业应用集成可以在不同层面上进行:例如在数据存储层面上的“数据大集中”,在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户界面上的“通用企业门户”等等 。事实上 , 还用一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录” 。单点登录的技术实现机制:当用户第一次访问应用系统1的时候,因为还没有登录 , 会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候 , 就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性 。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了 。可以看出,要实现SSO,需要以下主要的功能:所有应用系统共享一个身份认证系统;所有应用系统能够识别和提取ticket信息;应用系统能够识别已经登录过的用户,能自动判断当前用户是否登录过,从而完成单点登录的功能 。其中统一的身份认证系统最重要,认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket) , 返还给用户 。另外,认证系统还应该对ticket进行效验,判断其有效性 。整个系统可以存在两个以上的认证服务器,这些服务器甚至可以是不同的产品 。认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录 。
单点登录的几种实现方案用户已经登录企业门户的前提下 , 单点登录到门户中的应用 。门户与应用的域名有一定关系,门户的域名是父级域,比如xxx.com,应用的域名为二级域,比如a.xxx.com、b.xxx.com、c.xxx.com
登录门户后,颁发一个token用于接口认证,创建一个key为_a,domain为.xxx.com,path为/,value为token的cookie并set-cookie到前端,访问其他应用时 , 由于_a的domain为其他应用域名的父级域,会自动带上_a到后端,后端根据_a做接口校验 , 获取用户信息等资源,实现单点登录 。
用户已经登录企业门户的前提下 , 单点登录到门户中的应用 。门户与应用的域名没有关系 。
依旧使用上面的方案一,但是token使用header传输,不存在跨域问题
以上方案二 , 有一些细节需要注意
没有门户,或者用户不提前登录门户的前提下,不同应用实现单点登录 。
CAS , 网上教程众多,比如 CAS简介和整体流程。
方案二实际上也是利用了CAS思想实现的,ticket和token,可以类比CAS的ST(Service Ticket)和TGC(Ticket Granted Cookie) 。
怎么实现简单单点登录?所谓单点登录(Single Sign On就是在多个应用系统中go语言实现单点登录,用户只需要登录一次就可以访问所有相互信任go语言实现单点登录的应用系统 。其实对于程序员在技术上要实现就得就是多个不同域名间共享cookie的问题 。
最近在为ERP添加一个部署在另一台机器上,链接到原有老系统中的子项目,调用原有老项目中的Login实现单点登录,尝试go语言实现单点登录了N次屡试不成,最后确定问题,是,.net2.0与4.0中对cookie的加密/解密方法由此差异,于是经过研究,重写实现了一个可以在不同.net版本中实现单点登录的简单方法 。
代码:
protected void btnLogin_Click(object sender, EventArgs e)
{
//认证开票,跳转到原始请求页面
System.Web.Security.FormsAuthentication.RedirectFromLoginPage("ejiyuan", false);
}
配置文件:
!--访问权限控制--
【go语言实现单点登录 go语言怎么写界面】authorization
deny users="?"/
/authorization
!--身份认证方式--
authentication mode="Forms"
forms name=".ASPNET" protection="All" enableCrossAppRedirects="true" loginUrl="Login.aspx" timeout="2880" path="/" domain=".local.com"/
/authentication
!--验证算法--
machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902" decryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC" validation="SHA1" decryption="3DES" / compilation debug="true"/
go语言实现单点登录的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于go语言怎么写界面、go语言实现单点登录的信息别忘了在本站进行查找喔 。
推荐阅读
- 如何制作营销页面,如何制作营销页面图片
- 捡土豆做薯片休闲游戏教案的简单介绍
- html5表单怎么禁止为空,html阻止表单提交
- oracle如何回退表 oracle 回退sql
- 班级新媒体如何建设,班级新媒体建设指什么
- flutter是什么编程语言,flutter项目开发采用什么语言编写
- 自然数的次方函数c语言 自然数在c语言中怎么表示
- 机械硬盘怎么散热的视频,机械硬盘怎么降温
- 访问服务器共享文件,访问服务器共享文件夹需要密码