SpringClound 使用auth2 授权码登录多个系统是,怎么让每个系统的首次登录跳过授权页面

BinYong 发布于 2018/10/18 12:02
阅读 1K+
收藏 1

主项目是SpringCloud 用了 auth2 的 授权码模式进行sso登录,集成了外部的两个系统,但是 每次首次登录时,都要手动授权,请问这个配置,能让每个系统的首次登录 不用授权啊 

加载中
0
0
0808xyj

你是如何手动授权的?外部的两个系统 都是集成了SSO的客户端么?

B
BinYong
我们目前做的是三个系统共用一个登录,然后每次首次登录的时候,都会到一个授权页面,必须手动点击授权,才能登录成功。
0
q叉烧p
q叉烧p

进入授权页面,你输入账号密码,就会完成登录,然后redirect到需要的业务系统

0
哎码
哎码

有个配置是自动允许授权的,把它配置上:

就是红圈里面的配置,也可以实现clientService配置在数据库中或者是redis中,这个根据自己情况

0
B
BinYong

引用来自“哎码”的评论

有个配置是自动允许授权的,把它配置上:

就是红圈里面的配置,也可以实现clientService配置在数据库中或者是redis中,这个根据自己情况

我也试了这个 ,这个只能配置一个客户端,如果要读取数据库里的多个client都aotuApprove怎么设置呢?

B
BinYong
回复 @哎码 : 搞定了,我去,数据库被同事存成了 1,0 ,但源码是匹配true,难怪一直没用!谢谢了!
哎码
哎码
那就断点一步一步跟
B
BinYong
回复 @哎码 : 我数据库也配置了,是ture 但是 好像没启到作用 不知道 为什么
哎码
哎码
如果是实现ClientDetailsService的方式,那么实体类就需要继承ClientDetails这个类,这个类里面有个isAutoApprove方法,你需要读取到数据库中的数据,并返回true
哎码
哎码
你可以看看这个类org.springframework.security.oauth2.provider.client.JdbcClientDetailsService在里面搜索一下findClientDetailsSql,这个sql中有个autoapprove字段,你把你的数据库里面也加上这个字段,然后设置成true就行了
下一页
0
q叉烧p
q叉烧p
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        JdbcClientDetailsService clientDetailsService = new JdbcClientDetailsService(dataSource);
        clientDetailsService.setSelectClientDetailsSql(SecurityConstants.DEFAULT_SELECT_STATEMENT);
        clientDetailsService.setFindClientDetailsSql(SecurityConstants.DEFAULT_FIND_STATEMENT);
        clients.withClientDetails(clientDetailsService);
}
B
BinYong
回复 @蔡少东 : 这个从数据库查询的 我也配置了 ,但是没用 ,不知道为啥!
q叉烧p
q叉烧p
你三个系统~这里配置三个用户就好呀,应该不会太多
q叉烧p
q叉烧p
用这种方式可以从数据库查询
返回顶部
顶部