1.MeterSphere 单点登录认证教程(LDAP、OIDC 、OAuth2、CAS)
2.Go并发编程之原子操作sync/atomic
3.使用CAS,登录后报错: cas is
4.åç¹ç»å½åè®® CASãOAuthãOIDCãSAML
5.源码详解系列(八)--全面讲解HikariCP的使用和源码
MeterSphere 单点登录认证教程(LDAP、OIDC 、OAuth2、kettle源码改造CAS)
单点登录(SSO)通过一次登录实现多应用访问,简化企业账号管理。MeterSphere支持多种认证方式,包括LDAP、OIDC、OAuth2和CAS。o泡授权源码以下是具体配置步骤:
使用Keycloak配置OIDC
OIDC基于OAuth 2.0,创建Keycloak平台并创建域和客户端,输入有效的重定向URL,设置客户端凭据,然后在MeterSphere端配置OIDC,参照Keycloak的API信息填写对应参数。
配置LDAP单点登录
LDAP用于统一账号管理,搭建LDAP平台并创建用户,MeterSphere配置时填写相应的参数,完成登录后即可操作MeterSphere功能。
CAS认证
CAS通过验证票据实现多应用登录,仿码农源码找到支持CAS的平台,配置MeterSphere的认证设置,用户登录时会跳转到CAS平台进行授权。
OAuth2认证
OAuth2授权第三方应用访问用户数据,如GitHub,创建对接应用并在MeterSphere中配置认证,用户通过GitHub账号登录后可操作MeterSphere。
Go并发编程之原子操作sync/atomic
Go语言的并发编程中,sync/atomic包提供了底层的原子内存操作,用于处理并发环境中的数据同步和冲突避免。这个包利用了CPU的c+游戏源码原子操作指令,确保在并发情况下,对变量的操作是线程安全的。然而,官方建议仅在必要且确实涉及底层操作时使用,如避免使用channel或sync包中的锁的场景。
sync/atomic包的核心是5种基本数据类型的原子操作:add(只支持int、int、uint、uint和uintptr),以及一个扩展的Value类型,后者在1.4版本后支持Load、练手的漏洞源码Store、CompareAndSwap和Swap方法,可用于操作任意类型的数据。Value类型尤其重要,因为它扩展了原子操作的适用范围。
具体来说,swap操作(如SwapInt)用于原子地替换内存中的值,compare-and-swap(CAS)则检查并替换值,如果当前值与预期值一致。add操作(如AddInt)则进行加法操作并返回新值,而load、store操作分别用于读取和写入值,如LoadInt和StoreInt。
在实际使用时,例如对map的并发读写,可以通过Value类型避免加锁。sync/atomic的相关源码和示例可在GitHub的教程[1]和作者的个人网站[2]中找到。至于进一步学习,可以关注公众号coding进阶获取更多资源,或者在知乎[3]上查找无忌的资料。
参考资料:
[1] Go语言初级、中级和高级教程: github.com/jincheng9/go...
[2] Jincheng's Blog: jincheng9.github.io/
[3] 无忌: zhihu.com/people/thucuh...
使用CAS,登录后报错: cas is
使用CAS,登录后报错: CAS is Unavailable是登录错误造成的,解决方法为:1、首先我在GitHub上下载最新的cas的overlays利用它来搭建一套maven工程。
2、紧接着,我们配置成maven项目,点击maven的package,打包成一个cas服务端的war包。
3、把生成的war包放到Tomcat的webapps目录即可,然后配置Tomcat的server.xml开启端口,需要使用JDK自带的keytool生成证书。
4、最后我们点击Tomcat的bin目录然后就可以启动cas服务端了。
5、最后发现已经登陆成功了,如下图所示。
åç¹ç»å½åè®® CASãOAuthãOIDCãSAML
å¨ä»ç»å ·ä½åè®®ä¹åï¼æå¿ è¦å 说æâ认è¯ï¼Authenticationï¼âåâææï¼Authorizationï¼âçåºå«ãä¹å°±æ¯è¯´ï¼å½ç¨æ·ç»å½åºç¨ç³»ç»æ¶ï¼ç³»ç»éè¦å 认è¯ç¨æ·èº«ä»½ï¼ç¶åä¾æ®ç¨æ·èº«ä»½åè¿è¡ææã认è¯ä¸ææéè¦èå使ç¨ï¼æè½è®©ç¨æ·çæ£ç»å ¥å¹¶ä½¿ç¨åºç¨ç³»ç»ã
Central Authentication Serviceç®ç§°CASï¼æ¯ä¸ç§å¸¸è§çB/Sæ¶æçSSOåè®®ãåå ¶ä»ä»»ä½SSOåè®®ä¸æ ·ï¼ç¨æ·ä» éç»éä¸æ¬¡ï¼è®¿é®å ¶ä»åºç¨åæ éå次ç»éã
顾åæä¹ï¼CASæ¯ä¸ç§ä» ç¨äºAuthenticationçæå¡ï¼å®åOAuth/OIDCåè®®ä¸ä¸æ ·ï¼å¹¶ä¸è½ä½ä¸ºä¸ç§Authorizationçåè®®ã
å½åCASåè®®å æ¬CAS 1.0ãCAS2.0ãCAS3.0çæ¬ï¼è¿ä¸ä¸ªçæ¬ç认è¯æµç¨åºæ¬ç±»ä¼¼ã
CASç认è¯æµç¨éè¿å æ¬å é¨ååä¸è :
认è¯æµç¨å¤§è´ä¸º:
注:CAS 1.0æ¯ä¸ªé常ç®åç²éçåè®®ï¼å¨2.0ã3.0çæ¬ä¸ï¼Service Ticketçæ ¡éªç»æå为XMLæ ¼å¼ï¼ ä¸å¼å ¥äºä¸ç§proxy模å¼ï¼ä¸å¨æ¬æåæ·±å ¥è®¨è®ºï¼ã
CASåè®®ç详ç»æ åå®ä¹ï¼è¯·åèï¼
/specs/openid-connect-core-1_0.html
ä¸é¢ç®åä»ç»äºä¸»æµçå ç§SSOåè®®ï¼æ¬è´¨ä¸å®ä»¬å¤§åå°å¼ï¼é½æ¯åºäºä¸å¿ä¿¡ä»»çæºå¶ï¼æå¡æä¾è å身份æä¾è ä¹é´éè¿äºä¿¡æ¥äº¤æ¢ç¨æ·ä¿¡æ¯ï¼åªæ¯æ¯ä¸ªå议信æ¯äº¤æ¢çç»èä¸åï¼æè æ¦å¿µä¸æäºä¸åã
æåï¼éè¿ä¸ä¸ªç®å对æ¯è¡¨æ ¼æ¥æ»ç»æ¬æéç¹å 容ï¼
源码详解系列(八)--全面讲解HikariCP的使用和源码
源码详解系列(八):HikariCP深度剖析
HikariCP是一个高效数据库连接池,它的核心在于通过“池”复用连接,减少创建和关闭连接的开销。本文将全面介绍HikariCP的使用方法和源码细节。使用场景与内容
本文将涉及HikariCP的以下内容:如何获取连接对象并进行基本操作
项目环境设置,包括JDK、Maven版本和依赖库
如何配置HikariCP,包括依赖引入和配置文件编写
初始化连接池,以及通过JMX进行管理
源码分析,重点讲解ConcurrentBag和HikariPool类,以及其创新的“标记模型”
HikariDataSource的两个HikariPool的用意和加载配置
核心原理
HikariCP的性能优势主要源于其“标记模型”,通过减少锁的使用,提高并发性能。它使用CopyOnWriteArrayList来保证读操作的效率,结合CAS机制实现无锁的借出和归还操作。源码亮点
源码简洁且易读,特别是ConcurrentBag类,它是HikariCP的核心组件。类结构与DBCP2类似,包含一个通用的资源池,可以应用于其他需要池化管理的场景。总结
通过本文,读者可以深入了解HikariCP的工作原理,掌握其配置和使用技巧,以及源码实现。希望本文对数据库连接池有深入理解的开发者有所帮助。参考资料:
HikariCP官方GitHub地址