网站建设如何选择服务器,公司加强网站建设,网页图片不显示,广西建设网桂建云系统OAuth 2.0 的认证/授权流程 jwt只是认证中的一步
4中角色 资源拥有者#xff08;resource owner#xff09;、客户端#xff08;client 第三方#xff09;、授权服务器#xff08;authorization server#xff09;和资源服务器#xff08;resource server#xff09;。…
OAuth 2.0 的认证/授权流程 jwt只是认证中的一步
4中角色 资源拥有者resource owner、客户端client 第三方、授权服务器authorization server和资源服务器resource server。
Authorization Code授权码模式OAuth2的授权模式客户端先将用户导向认证服务器登录后获取授权码然后进行授权最后根据授权码获取访问令牌先向服务器认证获取授权码然后用这个授权码访问获取令牌
隐式授权模式/简化模式 密码模式自己开发的代码访问 客户端凭证模式
当访问令牌过期时 去续期AuthorizationServerConfig 授权服务器 包括了client名称客户端secret可授权类型有哪些令牌过期时间服务资源的唯一标识resourceIdsscopes范围
ResourceServerConfig 资源服务器 PreAuthorize(hasAuthority(back:user:role:set)) oauth2的http配置
WebSecurityConfig 在内存中构建身份验证 springsecurity的http配置
UserDetailsService 返回principal主体用户信息UserDetails和passwordEncoder进行验证比较 信息存到上下文
身份验证的是AuthenticationManager接口ProviderManager是它的一个默认实现委托给配置好的AuthenticationProvider账号密码/短信/验证码
拿到了access_token和refresh_token refresh_token 的存在可以减小长期访问令牌Access Token的风险
refresh_token是需要客户端秘钥 client_secret 过期并且重新获取的access_token中的refresh_token还是之前的 不然过期时间没意义配置客户端信息 client-id client-secret redirect scope authorization-grant-type
配置认证服务器信息 EnableOAuth2Client和EnableOAuth2Sso
token-uri为认证服务器颁发token的地址
authorization-uri为用于用户授权的页面地址
user-info-uri为获取用户信息的地址
spring.security.oauth2.client.provider.demo-server.user-info-urihttp://localhost:8081/userinfo 服务器需要提供这个接口获取用户信息
配置WebSecurityConfig 那些请求要去认证如何在不同的请求获取相同认证信息
每次请求都会从session获取信息set到threadlocal中 离开在threadlocal中清除信息// 在此处从会话中获取认证信息
Authentication authentication MySessionStorage.getStoredAuthentication();
// 将认证信息设置回SecurityContextHolder以便在请求中使用
SecurityContextHolder.getContext().setAuthentication(authentication);如何从子线程获取认证信息
Authentication authentication SecurityContextHolder.getContext().getAuthentication();
-Dspring.security.strategyMODE_INHERITABLETHREADLOCAL
InheritableThreadLocal 创建后主线程修改信息子线程是感知不到这个变化的。
void createMap(Thread t, T firstValue) {t.inheritableThreadLocals new ThreadLocalMap(this, firstValue); //父线程中的inheritableThreadLocals变量
}