控制台
authing blog banner
查看文章
Authing Share|Spring Security 集成 CAS 项目编码 认证(三)
在上一篇文章(《CAS 在 Authing 控制台配置 认证(二)》)中,我们讲述了如何在 Authing 平台配置项目集成中需要的 CAS 的配置,以及在后期开发过程中如何获取配置。同时,也提前让大家预习和熟悉了一些项目搭建和编码过程中需要的知识点。   接下来这一小节,就让我们一起来顺利完成项目搭建和编码过程吧。   01 项目搭建 使用 Spring Initializr 快速构建项目 打开 IDEA,点击 New Project 创建一个新项目,选择 Spring Initializr 创建一个 Spring Boot 项目,输入项目的 Group 以及 Artifact 信息。     集成过程中需要在 pom.xml 中添加一些其他的依赖包,如下: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>net.unicon.cas</groupId> <artifactId>cas-client-autoconfig-support</artifactId> <version>2.3.0-GA</version> </dependency> <!--远程调用接口使用--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.11</version> </dependency> </dependencies> 02  项目编码 配置项目中的文件 自动回调接口编码   在项目下新建一个 package,然后新建一个 CallBackController,此接口作用是通过 CAS 的 ticket 获取用户信息。注意,下面的参数 service,ticket 都是 Authing CAS 的标准,不能乱改,这也是标准协议的规定,service 参数所对应的值也就是之前在 Authing 平台应用所配置的那些。   package com.authing.cas.authingcas.controller; import cn.hutool.http.HttpUtil; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap; @Controller public class CallbackController { @GetMapping(value = "/", produces = MediaType.APPLICATION_XML_VALUE) @ResponseBody public String getTicket(String ticket) { HashMap<String, Object> paramMap = new HashMap<>(); paramMap.put("service", "http://localhost:9999/"); paramMap.put("ticket", ticket); String result = HttpUtil.get("https://cjtjls-demo.authing.cn/cas-idp/61319680ea8b30c9ca9ca071/serviceValidate", paramMap); return result; } } 运行项目 一切准备就绪了,现在启动项目并访问 http://localhost:9999,即可看到 Authing 登录窗口。   <cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas"> <cas:authenticationSuccess> <cas:user>用户名</cas:user> <cas:attributes> <cas:authenticationDate>2021-07-20T10:04:14.044Z</cas:authenticationDate> <cas:longTermAuthenticationRequestTokenUsed>false</cas:longTermAuthenticationRequestTokenUsed> <cas:updated_at/> <cas:address> <cas:locality/> <cas:street_address/> </cas:address> <cas:phone_number_verified>false</cas:phone_number_verified> <cas:gender>U</cas:gender> <cas:email_verified>false</cas:email_verified> <cas:picture>https://files.authing.co/authing-console/default-user-avatar.png</cas:picture> <cas:sub>60a5e57cfaa50e4850dd12b0</cas:sub> </cas:attributes> </cas:authenticationSuccess> </cas:serviceResponse>   此外,Authing 还会保存用户的登录态,用户短时间内再次登录无需进行认证。另外,如果 ticket 验证失败,Authing 将返回格式如下的 xml 文档。 <cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas"> <cas:authenticationFailure code="INVALID_TICKET">Ticket 不存在</cas:authenticationFailure> </cas:serviceResponse>   项目地址 https://github.com/Authing/example-spring-boot-cas     总结 恭喜 🎉,到此你已经学会了 Spring Security 5 集成 Authing CAS 认证授权的整个流程。后续还有更多的干货,持续关注吧!
穿越 300 年科技发展史,我们能学到什么?
“我充分的尊重与敬佩蒸汽机那段历史,这段历史不能被遗忘。同时,我们也要成为承前启后的新的生产力科技公司,我们用科技的手段去连接未来人们的记忆。生产力是我们这家公司最根本的基因,也是最不会变的主旋律。如果说人类的娱乐活动是一部短剧,那么生产力就是人类的史诗。” ——Authing CEO 谢扬   谈到信息时代,智能手机、5G、芯片这些耳熟能详的名词就必会被提及。世界如此之小,生活节奏如此之快,万千气象都要归功于 19 世纪以来近现代信息技术的发展。它深刻改变了人类的生活样貌,决定了当今社会的生活方式。   通古方能知今,当你拿着智能手机给天涯海角的亲朋好友发信时,你可曾想到 19 世纪第一次无线电电报传输是在什么情况下发出,发出的信息又是什么内容?   当你乘坐地铁、出租车时,你可曾想到在 1829 年,耶德利克·阿纽什研制完成世界上第一台直流电动机,还制造了一台与之配套的迷你车辆,使电动机得以驱动车辆运行。   在人类商业发展史上,技术创新至关重要。从 18 世纪 60 年代第一次工业革命开始至今,科技走过了接近 300 年的历史,成为人类文明最持久的动力——蒸汽机的发明,提供了开发和利用热能来驱动机械的手段;电磁波的出现,促进了电报的发明;计算机与万维网的出现,改变了人类沟通和获取信息的方式,使人类进入工业 4.0 时代。   通过了解科技发展史的脉络,为你读懂过去、决策当下、穿透未来。   01  生产力决定生产关系   在蒸汽时代来临之前,人类处于农业时代,社会生产力水平很低。而第一次工业革命的到来,使人类告别马车时代,迎来火车时代;告别纺织手工工厂,迎来纺织机器的变革。   美国加州大学经济史学家,格雷戈里·克拉克在《告别施舍:世界经济简史》里写道,近两百年前展开的工业革命,永久改变了物质消费的可能性。在工业革命以后,人均生活水平呈现爆发式增长。伴随人口现象级增长,一群受惠国家的人均收入开始持续增长。当今最富有的现代经济体,比 1800 年平均富裕 10 至 20 倍。   图片说明:一张图的世界经济发展史 在工业革命前的两千年,总体生产力增长很少。在这两千年的绝大部分时间里,世界棉花产业的扩张主要在于越来越多的人花更多的时间种植、纺织棉花——妇女们要么在农舍里坐着矮凳用小型木质纺车纺纱,要么坐在小屋前用纺纱杆和纺纱钵纺纱。尽管世界各地处理棉花的基本原理非常相似,但生产力都非常低,不足以形成规模化经营。   1736 年,瓦特被格拉斯哥大学雇佣修理一台纽可门蒸汽机。他发现,纽可门机的热量浪费太大——每一次蒸汽进入汽缸后,为了得到真空需要用冷水冷却,而下一次蒸汽进入后,需要先将已经冷却的汽缸加热,才能推动汽缸使汽缸充满高温蒸汽。在这一冷一热的过程中,热量损失太大。   一次偶然的机会让瓦特解决了这个问题,瓦特自述说:“那是一个晴朗的星期天下午,我出去散步。从察罗托街尽头的城门来到了草原,走过旧洗衣店。那时我正在继续考虑蒸汽机的事情,然后来到了牧人的茅舍。这时我突然想到——因为蒸汽是具有弹性的物质,所以能够冲进真空中。如果把汽缸和排气的容器相连接的话,那么蒸汽猛然冲入容器里,就可以在不使汽缸冷却的情况下使蒸汽在容器中凝结了吧?当这些在我的头脑里考虑成熟的时候,我还没有走到高尔夫球场。”   瓦特改造的蒸汽机点燃了“工业革命”的导火线,改进后的蒸汽机广泛应用于各种生产领域——数以百万计的机械锭子被蒸汽机驱动,由受薪工人操作,每天运转 14 个小时,生产出数百万磅纱线。   机器加速了工业的发展,缩短了物品的生产时间,降低了商品的价值。技术发展促成了生产集约化,使生产组织“从手工业到领料加工”发展为“工厂制社会化大生产”,产品开始大量供应到全球各地。   “有人这样评价瓦特发明的蒸汽机: 它武装了人类,使虚弱无力的双手变得力大无穷,健全了人类的大脑以处理一切难题。它为机械动力在未来创造奇迹打下了坚实的基础,将有助并报偿后代的劳动。” 02 信息技术的起源   作为近现代信息技术发展的起点,美国“电报之父”塞缪尔·莫尔斯可谓功勋卓著,他最早意识到了电磁学技术的兴起会对信息传输方式产生深刻改变——空气中的电磁波可以成为信息传输的最佳载体。   然而,从理论到实践之间存在着巨大的天堑,在理论基础不牢固、现实环境不支持、资金缺乏的情况下,他从无到有,通过一次次实验攻克难关。   1837 年 9 月 2 日是一个人类里程碑式的时刻!莫尔斯和他的合作伙伴在纽约大学第一次展示了如何将信息用电波传递到 500 米之外。1844 年,人类的第一个电报从美国首都华盛顿国会大厦向 40 英里外的巴尔的摩发出,内容是“上帝创造了如此奇迹“。这句话也成为 120 年后人类第一次卫星通信的发信内容。   莫尔斯的成功要归功于他化繁为简的思维方式。他发明了著名的莫尔斯电码,用最简单的电流通连给复杂的信息编码,滴滴哒哒的长短音成为了一个时代的经典乐章;他发明了点线发报机,极大地简化了电报信息的收发过程。长距离通信的困难,被莫尔斯分解为数个短距离通信的课题,继电器的发明使得电报信息可以传播数百英里以上。   1843 年,在美国国会批准下,人类第一条从华盛顿到巴尔的摩 40 英里长的电报线路被建设,标志着人类终于迈入了光速通信的技术时代。   电磁波被发现以后,很快在各个领域得到了应用,无线电是最引人注目的重大应用成就。马可尼已经发现,地球上空的电离层可以反射无线电波,这帮助他开通了英国与加拿大之间的无线电报。   1901 年 12 月 12 日,意大利人马可尼在加拿大纽芬兰的信号山山顶放了一只风筝接收到了来自遥远英国波尔社基站发出的信号——摩尔斯电码 S !由此,人类第一次不依赖任何实物,用看不见的媒介——无线电波穿越大洋,连接世界。   无线电波的传输过程中,距离始终是最大的技术难题,因为电信号会随着距离增加而平方衰减,是无可更改的物理事实。与马可尼同时期的发明家特斯拉,尽管也意识到无线电的广阔前景,却陷入了无线输电的误区。无线输送信号和无线输送能量,一念之差使得特斯拉走上了和马可尼截然不同的失败道路,而马可尼则在英国政府的支持下一步步改良无线电波传输技术直至成功。   科学发明过程中,无数伟人诞生的背后,有着更多失败的发明者,但是这其中的共性是企业家精神,通过对于新技术、新产品、新市场的不断探索,为企业发展、行业发展与国家经济的转型埋下了种子。   正如麦克·阿瑟在《技术的本质》里提到的,经济因其技术而形成了一种生态,因此经济形成于技术。技术和集合在一起,然后创造一个结构,决策、活动、物流、服务流都发生在其中,在这中间,经济不断地从它的技术中创造自己,并且决定哪种新技术将会进入其中。也就是说,技术创造了经济的结构,经济调节着新技术的创造。 03 开启计算机时代的天才   吴国盛在《科学的历程》里写到,继以蒸汽机为代表的第一次技术革命和以电动机为代表的第二次技术革命后,世界近代史上的第三次技术革命于 20 世纪中叶爆发,其核心技术是电子计算机技术。   电子计算机是一种代替人的脑力劳动的机器,它不仅运算速度快、处理数据量大,而且能部分模拟人的智能活动。它的出现,使人类社会的信息处理方式发生了翻天覆地的变化,从而从根本上改变了现代社会的运作结构。为电子计算机奠定基础的是电子技术,而计算机的出现则带动了一大批高新技术的发展,使人类进入了信息时代。   1833 年,英国发明家巴贝奇谈起用蒸汽驱动计算的设想,并真的开始设计这样一台机器。巴贝奇声称,这机器若是做出来,可将计算行为机械化,甚至将思维机械化。   虽然巴贝奇的分析机设计很笨重——大约有 30 米长、10 米宽;仅能存储 1000 个数字,每个数字最多 50 位数,1 秒内都无法完成一个加法运算,但是这个分析机的原理却与现代计算机十分相似,“根据人的指令行事”相当于如今的计算机编程。   霍列瑞斯发明了世界上第一台大规模数据处理装置,并于 1890 年成功应用于美国人口普查。霍列瑞斯的公司最终被一家企业合并了,这家企业后来更名为国际商用机器公司(简称 IBM)。到 20 世纪 20 年代末,IBM 靠向企业售卖专用计算机器盈利,让这些企业能够将日常的数字计算工作自动化。但 IBM 的机器还不是计算机,也不是像布拉克逻辑机那样的机器。它们不过是被过分美化的大型计算器而已。   克劳德·香农在其麻省理工学院的博士论文中解释了如何利用电力开关电路模拟布尔逻辑。受到该论文的鼓舞,IBM 的高管于 20 世纪 30 年代同意斥资制造一台基于机电式继电器的大型计算机器。他们给了哈佛大学教授霍华德·艾肯一笔在当时颇为可观的经费——50 万美元,用以研制 Mark I , Mark I 是一台受巴贝奇分析机的启发而设计的计算装置。巴贝奇设计的是一个纯粹的机械装置,相比之下,Mark I 是一个电力机械装置,它以继电器为开关,继电器阵列则作为数字存储空间。这台机器运行时噪声非常大,继电器不停地开关,咔咔地响个不停。   20 世纪 60 年代以来,由于大规模集成电路的问世,出现了一款新型计算机,这种计算机比之前的计算机体积更小、价格更低,功能也更强大,微机进入了各个生产环节,并开始向办公室和家庭渗透。不久之后,计算机的核心技术取得了重大突破,这使得计算机在功能、效率和小型化几个方面取得了惊人的发展。   由此,计算机不再是军事和大型企业的专属品,而是进入了“寻常百姓家”,悄无声息地改变了人类的工作和生活方式。   总结   当我们审视科技发展史的演进时,看到的其实是我们的过去。我们始终绕不开蒸汽时代,蒸汽时代促进了人类生产力大发展,我们后来的技术成果——计算机和集成电路等等如果追本溯源,都是来自蒸汽记忆。   如今,我们拥有这个时代最伟大的工具——计算机技术,没有人比我们更有责任和义务去帮助人民拥有更好的工作方式和生活方式。有了计算机技术,才能在此基础上做更多场景化尝试。   对于 Authing 来说,蒸汽记忆是我们奋斗的价值和意义。我们期望中国互联网/信息产业变得更好;我们热衷于做更难、更有价值的事情,期望更源远流长的影响社会;我们认为信息技术应该用来提效,解放人类,娱乐科技是逃避现实的一种方式,最终还得回归现实(工作),ToC 是毒品,ToB 是所有人回归现实后的解药。
当谈论卖 SaaS 时,我们究竟在卖什么?
10 月 24 日,身份云平台 Authing 宣布完成 2300 万美元 A 轮融资。本轮融资由老虎环球基金领投,鼎晖VGC(创新与成长基金)、声网 Agora、老股东 GGV纪源资本和奇绩创坛跟投,跃为资本担任独家财务顾问。 11 月 19 日下午,A 轮融资记者招待会成功举办,行业多方知名媒体参与。Authing 创始人谢扬发表“ 当谈论卖 SaaS,我们究竟在卖什么?”主题演讲,下面是本次演讲的精彩回顾。 01  SaaS 的本质是业务管理的沉淀   刚开始做软件开发的时候,我信奉的基本原理是:「程序 = 算法 + 数据结构」,因为彼时学的数据结构 + 算法可以表示出来的「魔法」很让人惊艳。很多人说程序很无聊,但我却认为程序能发挥出来的力量无比强大,小到可以算「1 + 1 = 2」,大到可以将火箭送到月球。在我看来,这不亚于哈利波特的魔法棒。   因此,我把我的 Macbook 取名为「Magic Wand」,我也希望我能利用这台小小的计算机发挥出让人惊叹的能量。   过了一段时间后,我觉得「程序 = 算法 + 数据结构」这种表述有点天真,但并不知道哪里出了问题。   还有一段时间,我聚焦于功能的开发,当功能开发了很多之后,我发现用户并不懂怎么使用,于是就开始研究怎么才能让用户快速上手。最后我发现让用户快速上手的核心是需要为用户定义一个「用户旅程」。从这时开始,我不再专注于功能的设计,而是专注于流程的设计。   因此那段时间,一个很重要的问题引发了我的思考:为什么人们喜欢用特定的软件,而不直接使用具备图灵完备性的 Excel?   软件的核心是流程,虽然 Excel 功能强大,但过于复杂,更多是非常模块化、原子化的组件,无法呈现特定领域的业务知识,使用具有一定门槛;而软件带有诸多事件按钮,是由程序加上软件工程构建出来的,即通过用户故事地图,将程序进行一系列的排列组合,以实现业务目的,它的一个进步性便体现在更加智能与体验友好(符合用户直觉),简化操作的同时,又具备程序能力。   我们发现软件其实与人的操作习惯、思考方式息息相关。SaaS(“软件即服务”)是卖给企业的,于是企业整个管理流程、业务流程与 SaaS 软件便融为了一体。好的 SaaS 软件能够让任何一个不懂这个行业的小白知道某件事件该怎么处理、数据该怎么分析、客户该如何管理、流程该如何设置等等,即好的 SaaS 软件是提供了咨询服务能力的,而不是囿于像 Excel 般功能迭代却忽视用户体验。 因此,SaaS = 软件+商业模式,SaaS 的本质是业务管理的沉淀,诸如 CRM 是定义管理程序的最佳实践、MA 是定义管理线索的最佳实践、HR SaaS 是定义管理员工的最佳实践,Authing 提供的身份云是管理员工和用户身份的最佳实践。   但世界上没有一片叶子是相同的,受限于企业的业务形态与人才构成,每家公司的管理哲学都是不一致的。越是与业务紧耦合的 SaaS,管理哲学越不一致,也就越需要 PaaS。我们都知道 Salesforce 做了大量的 PaaS 来赋能客户的定制化业务,身份其实也是。我们从一线客户了解到,中国不是不接受产品化,而是缺少好产品,尤其在身份领域,缺少体验好、能帮助客户加快上线时间的身份 PaaS 。   所有企业都在构建软件或者采购软件,所有软件最离不开的就是身份,Authing 作为最重要的一个「轮子」,支持嵌入或集成到各种各样的应用中,业务效果从各自为战到高效互联,最后可以进行秒级决策。Authing 的优势是集合所有低、中、高耦合度的软件。   下图是 Authing 将会致力实现的集成平台(Authing Parter Network),囊括 12 个行业,近 2000+ 软件。   我们是在定义人和应用之间的互操作性。所以,当我们在卖 SaaS,我们是在卖管理哲学。   而哲学主要涵盖的两个层面就是世界观和方法论,接下来我会阐述 Authing 所秉持的身份信息化的最佳实践和达到这个最佳实践所要付出的方法和努力。 02 Authing 背后的世界观   以下四种 Authing 世界观,告诉客户「身份+信息化」的操作流程。   世界观 1:Authing 是身份云 Identity Cloud —— 身份以云的形式存在是最佳方案 Authing 是国内唯一云原生的身份服务提供商,在技术侧强势领先。同时支持公共云、混合云和私有云部署,采用 Kubernetes 容器化技术,支持分钟级别弹性扩容,最大可支持亿级别用户认证访问场景。   Authing 身份云主要应用于员工身份管理和用户身份管理两个场景。   在员工身份方面,传统的员工身份系统往往会受到复杂性的限制,处于一种定制化、软件化的形态,而 Authing 的出现改变了这个局面。无需开发,集成企业内部系统,统一管控员工的身份权限,帮助企业构建安全的现代 IT 基础设施。   将来,Authing 会变成一种身份标准,在所有 SaaS 软件和用户中建立身份共享的社会性基础设施,连接所有人和应用。 同时,Authing 通过五行代码实现安全无缝的丰富认证方式(诸如第三方社交登录、扫码登录、跨端登录等),重新定义用户体验。   世界观 2:Authing 是身份基础设施 Identity Infra  —— 身份是企业信息化的基础设施   下图揭示了整个云计算的概览,基础设施层也就是 IaaS 层面是 AWS 和阿里云做的事情,往上一层是应用程序栈堆也就是 PaaS 层,是类似于 MongoDB 上云所做的事,再往上就是应用层和用户层,这就是 Authing 所做的事,我们将用户层和应用层通过云化方式托管,来做整个身份的解耦。 Authing 在 SaaS 产品之下开发了 PaaS 平台,成功地避免陷入定制化的困境中。   PaaS 平台为开发者提供身份认证 RPA、应用集成网关和通用登录组件(Guard),前者的作用是兼容老旧应用,这些老旧应用经常没有标准协议或无人维护,利用身份 RPA 和应用集成网关就可自动适配。Guard 是一种可嵌入的登录表单,可根据客户的需求进行配置。Authing 通过不断深耕身份基础设施建设,在分布式身份(DID)、数字身份、知识图谱等新兴技术上寻找突破点,通过技术手段降低客户的研发成本,提升企业效率。 世界观 3:Authing 是身份自动化 Identity Automation —— 身份产品的低代码工具将助力身份向智能化演进   我们认为,将来身份行业应该往自动化发展,就像在 Excel 中一个按钮,表格之间就可以实现联动。在任何应用内、应用和应用之间都需要规则实现数据联动。Authing 会按照规则实现全流程的操作和启动,通过一些可视化的、低代码的方式帮助我们的客户更好地配置员工旅程和用户旅程。 世界观 4:Authing 是安全管理和创新的最佳实践 Best Practise —— 身份是安全管理的核心   近来 “零信任” 备受关注,身份是零信任的核心。简单来讲,「零信任」的策略就是「不相信任何人」,除非明确接入者身份,否则将无法通过验证,进行下一步操作,Authing 正是零信任安全体系下身份安全基础设施的产品实现。Authing 面向数亿用户提供安全、伸缩和可靠的全场景身份云,通过持续认证、自适应安全,采用最新技术(诸如 OPA)来做安全管理和创新。 在安全方面,Authing 采用多租户加密、内部审计、强化的基础设施和运营控制、渗透试验、安全架构和团队和风控中台,打造值得客户信赖的服务;在伸缩方面,Authing  100% 云架构在 AWS 之上,拥有 Authing 专有创新;多租户发布平台快速方便地启动新的基础设施;在可靠性方面,Authing 已达到 99.999% 可用性,每次发布前 4k+ 测试用例,跨基础架构进行监视和警报,具有自动、无用户影响的故障切换。 03 Authing 背后的方法论 Authing 最终想要构建的是以人为本、以身份为中心的下一代计算基础设施,这种基础设施将从底层身份架构上解决普遍存在的数据孤岛问题。   Authing 依托世界观构建一系列方法论,围绕嵌入集成和连接来构建生态基础设施: B2C/B2B 产品和 B2E 产品各有各的最佳实践 身份自动化编排引擎是身份产品的必需品 以开发者为中心将加强身份语义化和互操作性 持续认证、自适应认证是身份安全的核心 在中国要像做 CRM 一样做身份产品,但身份产品比 CRM 产品还要难做百倍,Authing 的最大优势便在于开发者友好。对于开发者而言,我们认为最重要的制定相应数据安全保障体系和机制,即定义身份行业的标准、SoLiD 的开发范式以及身份的处理方式。归根结底,Authing 是一个载体——客户要的不是软件,而是如何通过软件解决存在问题,完善业务流程,成为业务管理的最佳实践。   04 Authing 未来一年全景规划 纵观历史来看,人类是工具的动物,Authing 始终相信最好的工具能激发人类最大的创造力。Authing 致力于成为一种能让计算机理解的新型身份互联标准,这将引发对新的未知可能性的探索。 Authing 已经带来计算的解耦,这种解耦的改变已经撬动计算的革命。 未来,Authing 将一直秉承着“连接全球人与应用”的使命,进一步开拓身份云技术,持续为各行各业的客户提供安全、现代化、可信任、可复用的身份基础设施,致力于成为全球最大的生产力科技公司。
Authing 官方
·
2021-11-29
·
648 人阅读
Authing Share | CAS 在 Authing 控制台配置认证(二)
在上一篇文章《 Spring Security 集成 Authing CAS 认证(一)》中,我们讲解了很多的基础知识和概念。同时,认证(一)中也讲述了什么是 CAS 协议、什么是单点登录、CAS 术语以及 CAS 协议流程图和概述。 接下来,本文将继续认证(一)的后续操作,来详细讲解集成过程需要在 Authing 平台配置的整个流程。 01 配置 Authing 获取 Authing 平台信息 首先要在 Authing 注册一个账号,然后进入控制台,按照引导步骤新建一个用户池。然后点击左侧的「应用」 菜单项,在右侧会看到一个默认创建好的应用。 点击「配置」,在应用页下找到认证配置,并配置自己的登录回调 URL,并且将默认协议类型改为 CAS。 配置完上述,继续往下配置,你会看到更多身份协议,点击「展开」。 进入到更多身份协议详细页,切换到 CAS 身份提供商,启用 CAS IdP,记录登录端点、登出端点、service ticket 检验端点(CAS 2.0)的地址, 后面搭建项目需要用到这些信息。   02 项目开发准备工作 开发环境 开发工具:IDEA 项目管理工具:Maven JDK版本:1.8 版本控制工具:Git 后文主基于以上环境来进行项目的搭建和编码工作,个别版本以及集成开发工具之间的差异对开发集成工作没有太大的影响,请根据个人的开发习惯来配置自己的本地环境,方便接下来的学习。   搭建项目方式 使用 maven 工具构建项目 使用 Spring Initializr 快速构建项目 后文搭建项目过程中,主要采用以上两种方式,对此不熟悉的小伙伴,可以提前熟悉一下。第三节将介绍如何使用这两种方式构建项目。 总结   本篇主要介绍了 CAS 在认证过程中所需要的配置,以及在 Authing 平台如何配置和获取这一系列的配置的过程。本篇的配置,将为第三节项目的搭建和编码所使用,第三节将使用代码实现 Spring Security 集成 Authing CAS 认证的全过程。 下一小结,主要讲解 Spring Security 集成 Authing CAS 项目编码认证(三), 持续关注吧,下期更精彩!
Authing Share|Spring Security 集成 Authing CAS 认证(一)
01  集成介绍   单点登录 (Single Sign On),英文名称缩写 SSO,意思是在多系统的环境中,登录单方系统,就可以无须再次登录,访问相关受信任的系统。也就是说,只要登录一次单体系统即可。 Authing CAS 是 SSO 解决方案的一种具体实现方式,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录,并且支持多种认证机制、安全策略、支持授权以及提供高可用性的方式,不需要客户关注于如何实现 CAS Server、配置 HTTPS 以及提供个性化的登录、登出的页面等等。Authing 简化配置流程,为用户提供一站式应用集成,用户只要在平台自行配置各种需要的方式即可。   02 知识储备学习   CAS 介绍 什么是 CAS CAS 框架:CAS(Central Authentication Service,即:统一认证服务)是实现 SSO 单点登录的框架。 什么是单点登录 单点登录:Single Sign On,简称 SSO,SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 CAS 术语 Ticket Granting Ticket (TGT) :可以认为是 CAS Server 根据用户名密码生成的一张票,存在 Server 端。 Ticket Granting Cookie (TGC) :其实就是一个 Cookie,存放用户身份信息,由 Server 发给 Client 端。 Service Ticket (ST) :由 TGT 生成的一次性票据,用于验证,只能用一次。相当于 Server 发给 Client 一张票,然后 Client 拿着这个票再来找 Server 验证,看看是否由 Server 签发。   CAS 协议流程图 流程概述 用户首次访问系统 A 用户浏览器访问系统 A 中受限资源,此时系统 A 进行登录检查,发现未登录,然后系统 A 检查访问的 URL 中是否带有令牌(ST),发现没有令牌(因为是首次登录)。 系统 A 将用户请求重新定向到认证中心(CAS Server),认证中心进行获取全局票据(TGT)操作,没有(因为是首次登录),所以用户需要进行登录操作(输入用户名和密码)。 认证中心呈现登录页面,用户登录,登录成功后,认证中心给用户浏览器设置 Cookie(TGC),然后认证中心重新定向请求到系统 A,并附上认证通过令牌(ST),此时认证中心同时生成了全局票据(TGT)。 此时再次进行登录检查,发现未登录,然后再次获取令牌操作,就可以获得令牌(ST)。系统 A 拿着令牌和请求 URL 与认证中心通信,验证令牌有效,认证中心返回成功,证明用户已登录。 系统 A 生成相应的 session(用于下次用户访问时验证),然后将受限资源返给用户。 已登录用户首次访问系统 B 浏览器访问另一系统 B 需登录受限资源,此时进行登录检查(session 检查),发现未登录,然后系统 B 检查访问的 URL 中是否带有令牌(ST),发现没有令牌。 系统 B 将请求重新定向到认证中心,认证中心进行获取全局票据(TGT)操作,可以获得(因为之前已经登录过)。 认证中心发放令牌(ST),并携带该令牌重新定向到系统 B。 系统 B 再次进行登录检查,发现未登录,然后再次获取令牌操作,此时可以获得令牌(ST),系统 B 拿着令牌和请求 URL 与认证中心通信,验证令牌有效,认证中心返回成功,证明用户已登录。 系统 B 生成相应的 session(用于下次用户访问时验证),然后将受限资源返回给用户。 用户登出 用户向系统 A 发起登出请求动作,系统 A 清除本地 session,同时清除用户浏览器中相应的 cookie。 系统 A 将用户请求重定向到认证中心的登出接口,认证中心根据获取到的票据(TGT)清除本地 session,同时清除用户浏览器中相应的 cookie(TGC)。 认证中心把用户请求重新定向回系统 A,这时由于系统 A 中已经没有了 session,所以请求会被重新定向到认证中心的登录页面。至此,用户已经完全退出系统了。   说明 关于 Spring Security 的相关知识点,请参考 《Spring Security 集成 Authing OIDC  认证(一)》一文。   总结   恭喜 🎉🎉🎉,到此您已经具备了 CAS 的基础知识。辛勤的付出,总是会有收获的哦! 感谢您的阅读和支持,记得点赞哦~ 下一小结,主要讲解 Authing CAS 在应用平台的配置 认证(二)。 持续关注吧,下期更精彩!
Authing Share|Spring Security 集成 OIDC 项目编码 认证(三)
  在上一篇文章《OIDC 在 Authing 控制台配置 认证(二)》(以下简称《认证(二)》)中,我们讲述了如何在 Authing 平台配置项目集成中需要的 OIDC 的配置,以及在后期开发过程中如何获取配置。同时,也提前让大家预习和熟悉了一些项目搭建和编码过程中需要的知识点。 接下来这一小节,就让我们一起来顺利完成项目搭建和编码过程吧。   项目搭建 使用 Spring Initializr 快速构建项目 打开 IDEA,点击 New Project 创建一个新项目,选择 Spring Initializr 创建一个 Spring Boot 项目,输入项目的 Group 以及 Artifact 信息。     添加 Spring Web, Spring Security 依赖。     另外,集成过程中需要在 pom.xml 中添加一些其他的依赖包,如下: <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-client</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-jose</artifactId> </dependency> <!--远程调用接口使用--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.11</version> </dependency>   使用 maven 工具构建项目 打开 IDEA,点击 New Project 创建一个新项目,选择 maven 创建一个 maven 项目,然后点击 Next,填写项目名称,最后 Finish 即可。     接下来在 pom.xml 中添加父工程依赖和集成过程中需要的其它依赖包。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.5</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-client</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-jose</artifactId> </dependency> <!--远程调用接口使用--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.11</version> </dependency>     说明:其中,hutool-all 工具包的作用是远程调用接口,当收到回调请求时,会使用该工具包远程调用 Authing 接口,即通过 code 换取 token 的流程,后续自动回调接口编码会使用到。   🎉🎉🎉至此,你已经完成了 使用 Spring Initializr 和 maven 两种方式构建项目,请选择一种适合自己项目开发的方式即可。   项目编码 测试项目 创建好项目后,在 IDEA 中运行项目,使用浏览器访问 http://localhost:8080 会自动跳转到 /login 路由,可以看到页面上出现了一个基础的登录表单,说明项目初始化成功。   配置项目中的配置文件 找到 src/main/resources/application.properties,将其重命名为 application.yml,并添加如下内容:   spring: security: oauth2: client: registration: authing: client-id: {替换为你的App ID如:App Secret5e72d72e3798fb03e1d57b13} client-secret: {替换为你的App Secret如:931f19ce2161e5560c072f586c706ee6} redirect-uri: {替换为登录的回调地址} client-authentication-method: post authorization-grant-type: authorization_code scope: - openid - profile provider: authing: issuer-uri: https://{替换为你的Issuer,如:authing-net-sdk-demo}.authing.cn/oidc user-name-attribute: preferred_username     需要将这里的 {client_id}、{secret_secret}、{issuer-uri} 、{redirect-uri} 替换成 《认证(二)》 中应用配置中的实际信息。 自动回调接口编码 在项目下新建一个 package(package cn.authing.springsecurityoidc.controller),然后新建一个 CallBackController,此接口作用是通过 Authing OIDC 的 code 获取 token 的过程。 注意,下面的参数都是 OIDC 的标准,不能乱改,这也是标准协议的规定,参数名所对应的值也就是之前在 Authing 平台应用所配置的那些。 package cn.authing.springsecurityoidc.controller; import cn.hutool.http.HttpUtil; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RestController public class CallBackController { @GetMapping("/callback") public String getTokenByCode(String code){ //'https://<你的应用域名>.authing.cn/oidc/token // --data-urlencode 'code=61yhuOVrgyhKlFTU~bnEKA_fnnz' \ // --data-urlencode 'client_id=5e37979f7b757ead14c534af' \ // --data-urlencode 'client_secret=64b517f8de3648091654eb4ee9b479d3' \ // --data-urlencode 'grant_type=authorization_code' \ // --data-urlencode 'redirect_uri=https://baidu.com' Map<String,Object> paramMap = new HashMap<>(); paramMap.put("code",code); paramMap.put("client_id","61319680ea8b30c9ca9ca071"); paramMap.put("client_secret","cc8a53d7e22ce6b845330ced6cc5d9f2"); paramMap.put("grant_type","authorization_code"); paramMap.put("redirect_uri","http://localhost:8080/callback"); String result = HttpUtil.post("https://cjtjls-demo.authing.cn/oidc/token", paramMap); return result; } }   添加配置文件类 在项目下新建一个 package(cn.authing.springsecurityoidc.config),然后新建一个SpringSecurityConfig,Spring Security 默认拦截所有的接口,此配置类是为了放行我们自己需要开放的接口。 package cn.authing.springsecurityoidc.config; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import static org.springframework.security.config.Customizer.withDefaults; @EnableWebSecurity(debug = true) public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.formLogin().disable(); http.csrf().and().cors().disable(); http.authorizeRequests() .mvcMatchers("callback","") .permitAll() .anyRequest().authenticated(); // 授权码模式回调 http.oauth2Login(withDefaults()); } }   运行项目 一切准备就绪了,现在启动项目并访问 http://localhost:8080,即可看到 Authing 登录窗口。   Spring Security 默认会保护首页,在访问首页时会进行认证,未认证的访问请求会跳转到 /login。 注册并登录后,会跳转回首页,此时可以看到页面上的欢迎语显示了当前登录用户的用户名。     当登录成功后,会自动回调到我们之前自己编码的接口,即前面所概述的 Code 换取 Token 的过程。此时界面会拿到返回值,如下:   { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InhENWlTYVJiU0dZQzFmdWFTRVdQXy1hejBORW5qSmtoZG00bTJ3X3ZwMHcifQ.eyJqdGkiOiJnbHdLbmMzbzlXYlVLUE5pWUF1V00iLCJzdWIiOiI2MTRmZDlhZTQyYjE5MmZjMzI4MjNiMTAiLCJpYXQiOjE2MzU5MjQwNjgsImV4cCI6MTYzNzEzMzY2OCwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSIsImlzcyI6Imh0dHBzOi8vY2p0amxzLWRlbW8uYXV0aGluZy5jbi9vaWRjIiwiYXVkIjoiNjEzMTk2ODBlYThiMzBjOWNhOWNhMDcxIn0.KG6_SCaXfm082WAuPZu2-gR2cuA1Heg50EeVF1ldAO_fvb72pkmgs7EiWXjLJwYUj3CNejIS1GwcDy9gVWw8jfO-aRxUyRMplDY-axzgu5frCxYrg_K7LhlU1xvQJIMKTx7HY7rldbbAX0JzqJx-xHCJItUiggvHjvF9-B1twmMP7Ua-UQxQdgkFd1SmbN9LwqxCo8AzsbX6jcBNJ3Ughv0_jUxYp6QPAeIEkXmOYlwdJR-4Rdn9XxPya5yF4wxgwZ_oybjViESr7BDwEXEPVWTF6czGzctmfhCD7EEE4sLWaP6TSmXAHyCYp6TVNpVNAXg2sKQSfbwPdR8PxOhFmg", "expires_in": 1209600, "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InhENWlTYVJiU0dZQzFmdWFTRVdQXy1hejBORW5qSmtoZG00bTJ3X3ZwMHcifQ.eyJzdWIiOiI2MTRmZDlhZTQyYjE5MmZjMzI4MjNiMTAiLCJiaXJ0aGRhdGUiOm51bGwsImZhbWlseV9uYW1lIjpudWxsLCJnZW5kZXIiOiJVIiwiZ2l2ZW5fbmFtZSI6bnVsbCwibG9jYWxlIjpudWxsLCJtaWRkbGVfbmFtZSI6bnVsbCwibmFtZSI6bnVsbCwibmlja25hbWUiOm51bGwsInBpY3R1cmUiOiJodHRwczovL2ZpbGVzLmF1dGhpbmcuY28vYXV0aGluZy1jb25zb2xlL2RlZmF1bHQtdXNlci1hdmF0YXIucG5nIiwicHJlZmVycmVkX3VzZXJuYW1lIjpudWxsLCJwcm9maWxlIjpudWxsLCJ1cGRhdGVkX2F0IjoiMjAyMS0xMS0wMVQxMToyOToyMi4zMDlaIiwid2Vic2l0ZSI6bnVsbCwiem9uZWluZm8iOm51bGwsIm5vbmNlIjoiekx6WndwR05faEpDdDNRTVlvMk12TmplT2o4aTM0U0tpR3ZlMVc0d2R1ayIsImF0X2hhc2giOiJFcGZUR1M2dFNpVnhiMkdPbkxUazNRIiwiYXVkIjoiNjEzMTk2ODBlYThiMzBjOWNhOWNhMDcxIiwiZXhwIjoxNjM3MTMzNjY4LCJpYXQiOjE2MzU5MjQwNjgsImlzcyI6Imh0dHBzOi8vY2p0amxzLWRlbW8uYXV0aGluZy5jbi9vaWRjIn0.iRoYa0JLoBJPXAPD8LjHnuvjQsQ5o5g9qUjPAj1aTMbZqa9GI3gUfxW-smudKJCJmGfYDYJaRP8_szdS03cXCt8u4rGc7y6e6y2Fqq1pssz3VlpRm9t_7LxJrUeBFu1ef87KWO0WZg5Nd6mdoIEAJXwRSW8BbTE_ARg8DZiOcrk3YJ2PxFqb6Tepf3Vw6XyxkHjOfDgJNDnnwHsiMGdXzTMYJwMNKkEjP8xQJl9oh9nOSDF_33-4Btn3nuQQPZ6ndTEcPbaYOo6PN_0IaisjuE3rzyCdGNXxgPrbXg2qywMKZrtj-AKROZ43IA2ito_MtJ6292N6IlFv9SR0Gr4hpw", "scope": "openid profile", "token_type": "Bearer" } 项目地址 https://github.com/Authing/example-spring-boot-oidc 总结 恭喜 🎉,到此你已经学会了 Spring Security 5 集成 Authing OIDC 认证授权的整个流程。后续还有更多的干货,持续关注吧!
Authing 实践|制造业身份认证统一管理解决方案
中国制造业的转型,迫在眉睫,关乎存亡。 面对困境,就要寻求改变。多年来,中国制造业一直处于经济高速发展的快车道中,受益于不断开拓的“增量”市场。但在经济增长平稳化、外贸波动的今天,如何利用数字化、信息化技术改造制造业,让制造业突破“存量”市场带来的“内卷化”困境,正成为当前每一家深耕于制造业的企业探寻的方向。   相比 “打造数字化产业生态”这样高大上的理想,真正推动转型的痛点,往往更加现实——“企业管理、组织架构与职能设置无法打通顶层决策和一线执行”、“不同角色的身份账号信息集中管理问题”,“如果通过身份连接产业链上的伙伴关系”,以及“如何与设备、客户绑的更紧密”。这些都远远超过“没资源”给企业带来的痛苦。   显然,在越发激烈的市场竞争中,现实中的问题更为重要。   Authing 作为下一代 IDaaS 身份云解决方案提供商,为制造业所遇到的真困境与现实问题提出了一套行之有效的解决方案。   01 从“孤岛”到“共生”,缔造制造业全场景多角色的统一身份 制造业是一个高度复杂性的行业,分布在各地的多种角色:管理型职工、生产型工人、经销商、供应商、上下游伙伴等,在推动制造企业协同发展的同时,给 IT 部门带来巨大的身份信息集中化管理困难。各个角色的身份数据分布在多个身份源系统之中,身份信息管控存在两大挑战,一是无法在同一个系统内管理所有角色人员,二是无法对同一个人的所有身份数据字段进行集中管理。 Authing 统一身份源,帮助制造业集成内部所有应用系统,完成用户账密同步、单点登录和授权,集中化管理产业链多账户身份信息: 全场景账号一次登录 制造业应用系统中,老旧应用多、设备多、登录入口多、登录方式多,员工登录体验差,企业 IT 管理难度大,没有打通内部应用系统,每个应用都有独立的身份管理体系,无法实现统一的身份整合。 Authing 一个账号登录所有应用的单点登录 SSO 解决方案,实现内部员工一次登录,就可以访问其他所有相互信任的应用系统,打破应用系统之间的集成和协作壁垒,整合管理应用系统的身份资源,实现多端多设备多登录管控,内部员工一个账号,一次性解决制造企业身份信息管理的挑战。 复杂场景的统一权限管理,有效防范数据泄露 制造业存在生产环节人员众多,应用系统复杂陈旧等不利因素,使得数据安全防控变得更加困难。 Authing 提供统一权限入口、统一权限模型、统一授权、权限生命周期自动化管理、权限合规分析、权限画像等服务,帮助解决制造业当前身份权限管理面临的开通难、统一难、授权难、溯源难、查询难、回收难、监管难的问题,打造科学的权限治理体系,整合制造业资源,实现用户、应用、设备、服务器、操作系统、 API 权限可管、可控和可视。   02 聚沙成塔,连接产业链协作,让工作更高效 庞大的员工数量、复杂的产业链角色、云和本地部署并存的业务系统、以及信息化基础薄弱等客观情况给制造行业的身份管理工作带来空前挑战。如何在有限资源的条件下,确保产业链各类角色成员都能高效的访问各类应用系统及办公资源,是 IT 管理部门的重要任务。 联邦认证 制造业供应链复杂,上下游合作伙伴繁多,多品牌及供应伙伴商都需登录企业诸多应用,且各应用之间访问时的身份互认,是现在研发团队的难点。Authing 联邦认证通过标准协议将不同的身份提供商联合起来对用户进行认证,帮助企业上下游合作伙伴各应用提供商之间建立信任关系,实现账号同步、数据同步规则,确保产业链各角色之间的正确互通及高效协作,大幅提升身份账号数据管理效率及安全。 多因素认证 MFA 随着移动办公、远程办公的普及,制造业都需要更现代化的 MFA 来管理更为复杂的访问请求。在多因素身份验证提供多层保护的情况下,Authing 自适应多因素身份验证会评估企业用户在请求访问时呈现的风险,查看用户设备和位置等详细信息以了解上下文。让企业间的协作更高效,实现安全高效办公。   03 实践总结 曾有人作出过这样的比喻:全球的制造业里美国是头脑,互联网公司提供了大脑式的上层建筑,制造业的心脏是德国和日本,四肢是中国。由此可见,中国制造业想要走向产业链价值链的高端,从“中国制造”变为中国“智造”,数字化是必经之路。   Authing 为某大型制造企业提供的统一身份管理方案核心内容包括: 可持续的 IT 管理和发展对于拥有数百个不同应用、不同产品、不同部门的扩张型公司来说至关重要。 不断扩充的客户量、不断推向市场的各类设备进行管理是集团目前面临的问题。 对于用户和设备的连接,上下游供应商/伙伴之间的协作,怎么进行身份验证,保障应用访问和设备访问的安全,访问的权限问题等都给研发团队带来极大的困扰。 多设备和用户的管理,运维人员效率低下且易出错,大量的重复的用户数据需要做冗余存放和同步管理,如何快速调整因设备业务等原因造成的用户变更问题。 项目效果评估: Authing 统一身份解决方案帮助集团完成了所有设备和用户身份的认证,授权管理和认证保证用户登录安全可控。 Authing 平台提供设备及用户账号的开通、启用、禁用、删除等功能,对下游提供用户与设备信息的同步。 可伸缩性、高扩展的 SaaS 平台部署模式,帮助集团实现多用户和多设备连接,以及面向未来设备与应用扩展的需求。 接入企业内部应用系统,完成账号同步、单点登录和多因素认证。   这一方案,实现了制造业内外双重的“无障碍交流”,与高度的“合作共生”。从长远来看,这种安全高效的数字化交流模式,革新了制造业的管理模式,让不同层级间、不同角色间、不同产业链间的信息触达更加高效。同时,也可以助力制造业上下游企业,以更为便捷的方式寻求共同发展,促成良性循环。   制造强国,科技兴国,当制造业遇上科技,这是一个时代的大事,也是“大势”。
OIDC 在 Authing 控制台配置 认证(二)
集成介绍 在上一篇文章《Spring Security 集成 Authing OIDC 认证(一)》(以下简称《认证(一)》)中我们讲解了很多的基础知识和概念。我们讲解了什么是 Spring Security ,以及使用 Spring Security 安全管理框架给我们开发工作带来的便利和整合难度的降低,极大地减少了大量重复代码的开发。同时,认证(一)中也解释了 Spring Security 中两个比较重要的概念(身份验证”和“授权”),它提供全面的权限控制、与 Spring 无缝整合、专门为Web 开发而设计。   认证(一)中也讲述了 OIDC 协议,是一个基于 OAuth 协议的身份认证标准协议,且完全兼容 OAuth。 Access Token 来解决授权第三方客户端访问受保护资源的问题,OIDC 在这个基础上提供了 ID Token 来解决第三方客户端标识用户身份认证的问题。认证(一)最后一部分讲述了 Spring Security 框架和 OIDC 集成的一些知识。接下来,本文将继续认证(一)的后续操作,来详细讲解集成过程需要在 Authing 平台配置的整个流程。   配置 Authing ¶获取 Authing 平台信息 首先要在 Authing 注册一个账号,然后进入控制台,按照引导步骤新建一个用户池。然后点击左侧的「应用」 菜单项,在右侧会看到一个默认创建好的应用。     点击「配置」,看到 App ID、App Secret 和 Issuer url,请妥善保存,之后会用到这些信息。     然后需要在回调地址处添加 http://localhost:8080/login/oauth2/code/authing 之后的选项与下图中保持一致,注意这个地址会在第三节的编码过程中用到,请留意。     最后还需要在授权配置中,勾选如下的配置,以确保该应用支持的授权模式和 token 的安全配置   项目开发准备工作 开发环境 开发工具:IDEA 项目管理工具:Maven JDK版本:1.8 版本控制工具:Git 后文主要以以上环境来进行项目的搭建和编码工作,个别版本以及集成开发工具之间的差异对开发集成工作没有太大的影响,请根据个人的开发习惯来配置一下自己的本地环境哦,方便接下来的学习。   搭建项目方式 使用 maven 工具构建项目 使用 Spring Initializr 快速构建项目 后文搭建项目过程中,主要采用以上两种方式,对此不熟悉的小伙伴,可以提前熟悉一下哦。第三节将介绍如何使用这两种方式构建项目。   总结 本篇主要介绍了 OIDC 在认证过程中所需要的配置,以及在 Authing 平台如何配置和获取这一系列的配置的过程。本篇的配置,将为第三节的项目的搭建和编码所使用,第三节将使用代码实现 Spring Security 集成 Authing OIDC 认证的全过程。 下一小结,主要讲解 Spring Security 集成 Authing OIDC 项目编码 认证(三),持续关注吧,下期更精彩!
10 月小报 | 新增应用管理员角色,优化交互体验细节,新增 Salesforce 身份供给及 Linkedin、Slack、Facebook 社交身份源
01Authing产品更新 1、协作管理员优化 详细功能 新增应用管理员角色,支持应用级别管理员权限分配 优化交互体验细节 能够为协作管理员分配更细粒度的权限,更便捷安全的管理平台权限   2、字段管理升级 详细功能 新增支持控制台、个人中心是否可见字段的配置能力 新增用户是否可以编辑的配置能力 新增是否为唯一字段的配置能力 新增了下拉框类型数据的支持 前端交互做了全面升级 升级后能够为管理员更精细化地控制基础字段与扩展字段在平台中的使用与展示   3、应用市场新增应用上线 详细功能 新增 Jumpserver 新增 Dropbox 新增 Splunk 新增 腾讯云用户 SSO 新增 Salesforce 身份供给   4、上线新手引导 详细功能 控制台左侧菜单栏新增「新手引导」模块 新增「试试登录框」、「将 Authing 嵌入到你的应用」、「连接身份源」、「保护你的应用安全」、「开启应用面板」、「逛逛应用市场」卡片 各个模块的帮助文档链接地址 用户可以通过新手引导快速上手,并全面地了解 Authing 的各个功能模块的作用。   5、新增社交身份源 详细功能 新增 linkedin 社交身份源 新增 slack 社交身份源 新增 facebook 社交身份源 02 市场动态 Authing 完成 2300 万美元 A 轮融资。本轮融资由老虎环球基金领投,鼎晖VGC、 声网Agora、老股东纪源资本GGV 和奇绩创坛跟投。Authing 本轮融资资金将主要用于加大研发投入、人才引进和市场拓展,以完善产品矩阵、加速商业化进程。   中国信通院-数字安全落地工作完成首次线上宣讲,常态化开展后续工作。Authing 作为中国信息通信研究院“卓信大数据计划”第三批成员单位出席。   03 重要签约客户 天友建筑 宿迁市市民卡 深圳捎客 上海盛剑   案例分享: https://mp.weixin.qq.com/s/YBPwEjuKSobj0My1lzLCpw https://mp.weixin.qq.com/s/o3JitfdmHIsVPDYvPOiLDQ    
Authing share | 一文带你了解 Spring Security 集成 Authing OIDC 认证(一)
集成介绍 Authing OIDC 允许客户端根据授权服务器执行的身份验证来验证最终用户的身份,并以可互操作和类似 REST 的方式获取有关最终用户的基本配置文件信息。 允许所有类型的客户端(包括基于 Web 的客户端、移动客户端和 JavaScript 客户端)请求和接收有关经过身份验证的会话和最终用户的信息。   规范套件是可扩展的,允许参与者在对他们有意义的时候使用可选功能,例如身份数据加密、OpenID 提供者的发现和会话管理。 允许应用程序和站点开发人员对用户进行身份验证,而无需承担存储和管理密码的责任,因为互联网上充斥着大量试图为了自己的利益而破坏用户账户的人。 它简单、可靠、安全,并且可以让他们摆脱存储和管理他人密码的困难和危险工作。还有一个额外的好处是,它使用户的注册过程更轻松,从而减少了用户跳出率。 利用 Authing OIDC 服务作为用户认证中心的统一入口,使所有需要登录的地方都交给 OIDC 服务来做。简单来说就是把需要进行用户认证的部分都剥离出来交给 OIDC 认证中心来完成。   知识储备学习 Spring Security 介绍 Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了很多年了。Spring Security 为基于 J2EE 的企业软件应用程序提供了全面的安全解决方案。程序安全的两个主要领域是 “身份验证”和“授权”(或 “访问控制”)。这是 Spring Security 所针对的两个主要领域。“身份验证”是建立主体的过程,即他们声称是谁(“主体”通常是指可以在您的应用程序中执行操作的用户、设备或其他一些系统)。 “授权”指决定是否允许委托人在您的应用程序中执行操作的过程。为了到达需要授权决定的点,身份验证过程已经建立了委托人的身份,这些概念是常见的,并且完全不是特定于 Spring Security 的。   项目获取代码地址 要获取项目的源代码,请使用以下 git 命令: git clone git://git.springsource.org/spring-security/spring-security.git   Spring Security 对 OpenID 支持 命名空间支持 OpenID 登录,可以代替普通的基于表单的登录,或者除了普通的基于表单的登录之外,还有一个简单的更改: <http> <intercept-url pattern = "/**" access = "ROLE_USER" /> <openid-login /> </http>   然后,您应该向 OpenID 提供商注册自己,并将用户信息添加到您的内存中 <user-service>: <user name = "http://xxx./openid" authority = "ROLE_USER" />   Spring Security 对 OpenID 属性交换的支持 例如,以下配置将尝试从 OpenID 提供程序检索电子邮件和全名,以供应用程序使用: <openid-login> <attribute-exchange> <openid-attribute name = "email" type = "http://xxx./email" required = "true"> <openid-attribute name = "name" type = "http://xxx./namePerson" /> </attribute-xchange> </openid-login>   OIDC 介绍 OIDC 是 OpenID Connect 的简称,OIDC = (Identity, Authentication) + OAuth 2.0。它在 OAuth 上构建了一个身份层,是一个基于 OAuth 协议的身份认证标准协议。我们都知道 OAuth 是一个授权协议,它无法提供完善的身份认证功能,OIDC 使用 OAuth 的授权服务器来为第三方客户端提供用户的身份认证,并把对应的身份认证信息传递给客户端,且可以适用于各种类型的客户端(比如服务端应用,移动 APP,JS 应用),且完全兼容 OAuth,也就是说你搭建了一个 OIDC 的服务后,也可以当作一个 OAuth 的服务来用。   OAuth 2.0 提供了 Access Token 来解决授权第三方客户端访问受保护资源的问题,OIDC 在这个基础上提供了 ID Token 来解决第三方客户端标识用户身份认证的问题。OIDC 的核心在于在 OAuth 2.0 的授权流程中,一并提供用户的身份认证信息(ID Token)给到第三方客户端,ID Token 使用 JWT 格式来包装,得益于 JWT 的自包含性,紧凑性以及防篡改机制,使得 ID Token 可以安全的传递给第三方客户端程序并且容易被验证。此外还提供了 UserInfo 的接口,用户获取用户的更完整的信息。   OIDC 主要术语 主要的术语以及概念介绍 EU:一个人类用户 RP:用来代指 OAuth 2.0 中的受信任的客户端,身份认证和授权信息的消费方 OP:有能力提供 EU 认证的服务(比如 OAuth 2.0 中的授权服务),用来为 RP 提供 EU 的身份认证信息 ID Token:JWT 格式的数据,包含 EU 身份认证的信息 UserInfo Endpoint:用户信息接口(受 OAuth 2.0 保护),当 RP 使用 Access Token 访问时,返回授权用户的信息,此接口必须使用 HTTPS   OIDC 工作流程 OpenID Connect 协议抽象地遵循以下步骤: RP(客户端)向 OpenID 提供者(OP)发送请求 OP 对最终用户进行身份验证并获得授权 OP 使用 ID 令牌和通常的访问令牌进行响应 RP 可以向 UserInfo Endpoint 发送带有访问令牌的请求 UserInfo 端点返回有关最终用户的声明   这些步骤如下图所示:   下面是一个成功的令牌响应的非规范示例:   HTTP/1.1 200 正常 内容类型:应用程序/json 缓存控制:无存储 编译指示:无缓存 { "access_token": "SlAV32hkKG", "token_type": "承载", "refresh_token": "8xLOxBtZp8", "expires_in": 3600, "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzc yI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIwKICJzdWIiOiAiMjQ4Mjg5 NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZ fV3pBMk1qiiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEZMTEYODA5Nz AKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6q -cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJ NqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7Tpd QyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJboEoRoS K5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4 XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg" } 总结 恭喜 🎉🎉🎉,到此您已经具备了 Spring Security 和 OIDC 的基础知识。辛勤的付出,总是会有收获的哦。 下一小节,主要讲解 Authing OIDC 在应用平台的配置 认证(二),持续关注吧,下期更精彩!