• benxiong
    2020-09-10
    创建表的时候报错了: CREATE TABLE `oauth_client_details` ( `client_id` varchar(255) NOT NULL, `resource_ids` varchar(255) DEFAULT NULL, `client_secret` varchar(255) DEFAULT NULL, `scope` varchar(255) DEFAULT NULL, `authorized_grant_types` varchar(255) DEFAULT NULL, `web_server_redirect_uri` varchar(255) DEFAULT NULL, `authorities` varchar(255) DEFAULT NULL, `access_token_validity` int(11) DEFAULT NULL, `refresh_token_validity` int(11) DEFAULT NULL, `additional_information` varchar(255) DEFAULT NULL, `autoapprove` varchar(255) DEFAULT NULL, PRIMARY KEY (`client_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 > 1071 - Specified key was too long; max key length is 767 bytes > 时间: 0s 网上说是 mysql innodb存储引擎 的 varchar 主键只支持不超过767个字节 或者 768/2=384个双字节 或者767/3=255个三字节 或者 767/4=191个四字节的字段,GBK是双字节的,UTF8是三字节的,utf8mb4是四字节的,我按照这个说法,把主键 client_id 字段长度改为 VARCHAR(111),就创建成功了。 但是我是很信服朱晔老师的,他非常严谨,他肯定是测试通过以后才发表的文章,所以我觉得应该还有别的原因导致他可以创建,而我却报错。 这个原因期待老师和别的小伙伴帮忙解答。
    展开

    作者回复: MySQL 5.7 之后这个限制放宽到了 3072 字节,所以我没问题

    共 2 条评论
    1
  • 布吉岛
    2020-08-15
    csrf攻击不讲嘛?

    作者回复: 为啥要讲呢

    
    1
  • Geek_fb74a8
    2020-08-06
    请教一下老师,使用jwt的话应该怎么处理过期以及登出等处理?可否将jwt令牌存入Redis?

    作者回复: jwt可以自验证 要实现登出等 需要改为透明token

    共 3 条评论
    1
  • Tim Zhang
    2020-07-24
    有个问题,请指教: 我的需求是想开发一个统一认证平台,公司内所有应用需要认证,资源权限管控的都走这个应用 用户首先访问a应用的某个webapi(受保护应用),a应用发现token不存在,跳转到我的统一认证授权中心的登录界面,选择使用微信进行认证,认证成功后,根据我的数据库中的rbac表,查询这个用户在a应用的权限与角色,生成token,将token返回给受保护资源的应用a,然后a应用进行验证。 我的问题如下: 1、那些刷新accesstoken,refrshtoken过期的重新跳转的逻辑,是否只能写在不同a、b、c、d这些受保护资源应用的filter逻辑中 2、比如公司有100个应用需要做认证授权,是否这些应用的(用户,角色,资源)表结构都维护在统一认证中心所对应的db中。 3、我看老师引用了网关,是否网关可以切面做掉点通用逻辑 4、受保护资源保护的资源(webapi),假设是基于http rest的spring mvc编写的,是否就是那些control ler中的路由url,在这些url之上使用切面逻辑来验证token中的资源权限是否与当前路由匹配(比如验证http方法+url路径) 5、受保护资源应用自己的数据库中假设存有用户表,是否还要与统一认证中的用户表进行实时关联,比如a应用的用户aa删除了,还需要实时删除统一认证中的aa用户在a应用中的数据 问题较多,乱,请老师抽空回复下,谢谢了
    展开

    作者回复: 1、这些SpringSecurity都可以直接做 2、权限应该统一维护在认证中心比较好 3、微服务网关可以做token到uid的翻译以及鉴权 4、SpringSecurity都可以直接做 5、用户表应该只存在一处,比如认证中心,其他系统都存uid关联

    
    
  • 苗
    2021-05-11
    导出公钥证书的命令:keytool -list -rfc --keystore mytest.jks | openssl x509 -inform pem -pubkey
    共 1 条评论
    9
  • 而立斋
    2020-07-23
    爱了,我要去手撸一遍,验证一下真伪。哈哈
    
    6
  • Younger Ku
    2020-08-19
    能把源码带着看一遍,再把经常需要定制化的地方讲一下就好了。无论如何只停留在demo使用层面总感觉心里不踏实。
    
    5
  • 行一善
    2022-08-05 来自浙江
    生成jks密钥库 生成.jks文件 keytool -genkey -alias tutorialspedia -keyalg RSA -keystore "/home/yaoshenglu/keytool/tutorialspedia.jks" keytool -genkey -alias jwt -keyalg RSA -keystore "/home/yaoshenglu/keytool/jwt.jks" 导出公共证书 .cer文件 keytool -export -alias tutorialspedia -file "/home/yaoshenglu/keytool/tutorialspedia_public_cert.cer" -keystore "/home/yaoshenglu/keytool/tutorialspedia.jks" keytool -export -alias jwt -file "/home/yaoshenglu/keytool/public.cert" -keystore "/home/yaoshenglu/keytool/jwt.jks" 查看公钥 keytool -list -rfc --keystore tutorialspedia.jks | openssl x509 -inform pem -pubkey keytool -list -rfc --keystore jwt.jks | openssl x509 -inform pem -pubkey
    展开
    
    2
  • Geek_0d99c9
    2020-12-18
    代码有点问题.直接访问8082/ 还是被重定向到login页面.OAuth2ClientApplication这个里面的EnableOAuth2Sso注解会覆盖WebSecurityConfig里面的免登录配置.所以应该把两个合并下 package me.josephzhu.springsecurity101.cloud.auth.client; import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.oauth2.client.OAuth2ClientContext; import org.springframework.security.oauth2.client.OAuth2RestTemplate; import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails; @EnableOAuth2Sso @Configuration @Order(200) public class WebSecurityConfig extends WebSecurityConfigurerAdapter { /** * /路径和/login路径允许访问,其它路径需要身份认证后才能访问 * * @param http * @throws Exception */ @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/test","/", "/login**","/**/test","/ui/test", "/logout") .permitAll() .anyRequest() .authenticated().and() .logout().logoutSuccessUrl("/");; } @Bean public OAuth2RestTemplate oauth2RestTemplate(OAuth2ClientContext oAuth2ClientContext, OAuth2ProtectedResourceDetails details) { return new OAuth2RestTemplate(details, oAuth2ClientContext); } }
    展开
    共 3 条评论
    2
  • Anony
    2020-12-02
    客户端使用了@EnableOAuth2Sso,里面包含自己的WebSecurity会拦截所有请求。而后自己定义的WebSecurity,Order是200,实际上是不起作用的吧,即使让某些url permitAll,也会直接跳转到授权服务器的登录页。请求都会直接被靠前的EnableOAuth2Sso里的过滤链处理 。
    共 1 条评论
    2