代码拉取完成,页面将自动刷新
三方: 1、入口地址 /oauth2Login被filter拦截 org.springframework.security.oauth2.client.filter.OAuth2ClientContextFilter FilterChain org.springframework.security.oauth2.client.filter.OAuth2ClientAuthenticationProcessingFilter 如果没有token OAuth2ClientContextFilter.redirectUser(redirect, request, response); 302到授权服务器的/oauth/authorize 3、回调地址 /oauth2Login?code=vzPM3K&state=g3vW7k 4、请求token /oauth/token 后台调用 服务器: 2、/oauth/authorize org.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint 获取code 302到三方的回调地址 前端重定向 /oauth/token org.springframework.security.oauth2.provider.endpoint.TokenEndpoint 三方第一次oauth登录流程 org.springframework.security.oauth2.client.filter.OAuth2ClientAuthenticationProcessingFilter.attemptAuthentication() -->org.springframework.security.oauth2.client.OAuth2RestTemplate.getAccessToken() ---->acquireAccessToken() ------>org.springframework.security.oauth2.client.token.AccessTokenProviderChain.obtainAccessToken ------->obtainNewAccessTokenInternal ---------->org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider.obtainAccessToken 上面都是要尽力获取token,如果获取到则重定向的授权服务器授权码接口 ---------------->getRedirectForAuthorization 填充UserRedirectRequiredException ------------------>org.springframework.security.oauth2.client.token.grant.redirect.AbstractRedirectResourceDetails.getRedirectUri 确定获取code url中redirect参数 -------------------->org.springframework.security.oauth2.client.filter.OAuth2ClientContextFilter.doFilter 过滤器链捕获异常,302到授权码接口 为什么集成security的三方oauth登录地址和回调地址默认是一样的,答案就在AbstractRedirectResourceDetails.getRedirectUri public String getRedirectUri(AccessTokenRequest request) { String redirectUri = request.getFirst("redirect_uri"); // 这里redirect回调地址默认取的就是当前的url,也就是oauth的入口地址 if (redirectUri == null && request.getCurrentUri() != null && useCurrentUri) { redirectUri = request.getCurrentUri(); } // 如果要自定义oauth回调地址 就要将useCurrentURI设置false,preEstablishedRedirectUri设置为自定义的回调地址 if (redirectUri == null && getPreEstablishedRedirectUri() != null) { // Override the redirect_uri if it is pre-registered redirectUri = getPreEstablishedRedirectUri(); } return redirectUri; }
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。