使用场景:
- 移动端通过业务系统鉴权
- 移动端免登录(登录一次以后)
解决方案:
疑问
当然我们这章是讲JWT,那么会有以下的疑问:
若服务端已经接入了SSO,那么在移动端用户登录信息提交给SSO还是服务端?(毫无疑问是服务端,SSO对于移动端必须是透明的)
若采用无会话方式,如何获取token,服务端如何鉴权?
1.提交用户名密码到服务端,服务端把数据给到sso,sso最终返回用户数据
2. 根据用户数据创建token返回给移动端
3. 移动端登录后请求都带token给到服务端鉴权
在使用token鉴权的情况下,退出如何解决?(客户端丢弃token即可)
鉴权流程
我们再讲一下整一个鉴权流程
配置要素
重点:sso必须支持 rest认证方式
io.buji
buji-pac4j
3.0.0
org.pac4j
pac4j-cas
2.1.0
org.pac4j
pac4j-jwt
2.1.0
org.pac4j
pac4j-http
2.1.0
鉴权配置
若马上看下面的代码,估计一时半会看不懂,所以必须再讲一下整个交易过程
服务端鉴权过程有两个个角色分别为,Shiro、Pac4j,那他们的职责是什么?
Shiro:
判断当前Subject是否有权限执行该资源,所以他的核心是Realm、Filter,只有被过滤到的资源才会走到Realm
Pac4j:
1. JWTAuthenticator对token进行鉴别
2. CasRestFormClient 支持通过rest接口传入用户名密码进行对sso进行认证获取UserProfile
3. Pac4jRealm鉴权的realm
4. SubjectFactory需要调整成Pac4jSubjectFactory
ShiroConfiguration.java
token生成
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240428/CAS-%E6%8A%80%E6%9C%AF%E4%B8%93%E5%8C%BA-%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%9B%86%E6%88%90shiro-springboot-jwt-pac4j_51CTO%E5%8D%9A%E5%AE%A2_springboot%E9%9B%86%E6%88%90cas%E5%92%8Cshiro/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com