我们系统要做统一登录,授权服务器跳转到我们系统之后,进行账号校验存在的话,直接进入系统吗?如果直接进入系统,redis中的token又是怎样存进去的?
我想的是我们系统内部应该要再登录一次,然后登录的话,需要账号密码,但是拿不到密码.只能新写一个登录接口,只需要账号就能登录.
新写登录接口,还得用Spring Security原有的登录逻辑,原来的登录和新的登录需要并存,目前情况就是这样,各位大佬有没有什么思路
目前是 基于 OAuth 2.0 + JWT 的登录系统吗?
统一登录,是指 登录一次,然后,在不同域名的多个网站下都可以使用?哦,叫做【单点登录】。
登录 url 不同,实现不同的 过滤器链即可,不同的链处理不同的登录请求。
官方文档:
https://docs.spring.io/spring-security/reference/servlet/architecture.html
The following image shows multiple SecurityFilterChain instances:
https://docs.spring.io/spring-security/reference/_images/servlet/architecture/multi-securityfilterchain.png
我们系统是Spring Security,然后要跟第三方对接统一登录,用的aouth2授权模式,我们这边只做回调处理
@堅:
第三方?微信开放平台、QQ登录?
第三方登录后会 返回信息给 前端,也会回调 你们系统
前端 用这个信息 来 你们系统 做一次登录——开发 登录的Filter 或者 SecurityFilterChain 来处理——验证及其它(比如 存 token?)
@堅:
可以看看 微信开放平台 的文档。
再和你们的 第三方登录 对比下咯。
是的,你需要自己再做一个登录,根据你的描述,对方用的是oauth2,那他回调回来的之后一般也就是一个code,这个和微信登录是一样的,微信也是给你返回一个code;你用code 去换对方的账号,和本地账号匹配,然后正常走本地的登录逻辑;一般来说其他的所有的第三方登录都是这个逻辑,这个叫一个账号多处使用;
还有一种就是你的服务是作为整个系统的子系统,此时登录就不是你需要关心的事情,你只需要验证token,不需要生成token;
还有一种就是一次登录,到处使用,这种更多的是考虑同域下cookie可以跨域使用的场景;
子系统在授权中心登录回调后可根据返回的授权码换取用户信息,子系统再根据用户信息生成新的令牌即可。