Spring security 当身份验证服务器重定向到SSO代理服务器时,它不会';我不知道登录成功了
Spring security 当身份验证服务器重定向到SSO代理服务器时,它不会';我不知道登录成功了,spring-security,single-sign-on,spring-security-oauth2,Spring Security,Single Sign On,Spring Security Oauth2,成功登录到身份验证服务器后,它会重定向回启用SSO的代理服务器,但代理服务器无法识别用户已通过身份验证,因此它会弹出第三方权限页,而不是将用户转发到最初请求的受保护资源。单击“第三方权限”页面上的“接受”后,将重定向到最初请求的受保护资源
得到302
响应标题:位置:
响应头:设置Cookie:JSESSIONID=15F0789B7182469477E5F713D64A9BF3;路径=/;HttpOnly
得到302
请求Cookie:JSESSIONID=15F0789B7182469477
成功登录到身份验证服务器后,它会重定向回启用SSO的代理服务器,但代理服务器无法识别用户已通过身份验证,因此它会弹出第三方权限页,而不是将用户转发到最初请求的受保护资源。单击“第三方权限”页面上的“接受”后,将重定向到最初请求的受保护资源
得到302
响应标题:位置:
响应头:设置Cookie:JSESSIONID=15F0789B7182469477E5F713D64A9BF3;路径=/;HttpOnly
得到302
请求Cookie:JSESSIONID=15F0789B7182469477E5F713D64A9BF3
响应标题:位置:
得到302
请求头:Cookie:JSESSIONID=15F0789B7182469477E5F713D64A9BF3
响应标题:位置:
响应头:设置Cookie:SESSION=ZJK5Y2Y5YTETMJE2OC00MTRKLTHNGUTNGZLODFKOTI4MWNJ;路径=/;HttpOnly;SameSite=Lax
拿200
请求头:Cookie:JSESSIONID=15F0789B7182469477E5F713D64A9BF3;会话=ZJK5Y2Y5YTEMJE2OC00MTRKLTHNGUTNGZLODFKOTI4MWNJ
拿200
请求头:Cookie:JSESSIONID=15F0789B7182469477E5F713D64A9BF3;会话=MMVHodcymmTzDC0MS00NJK3LTK4MTKTYTG4MMJY4YMQ2
职位
请求头:Cookie:JSESSIONID=15F0789B7182469477E5F713D64A9BF3;会话=MMVHodcymmTzDC0MS00NJK3LTK4MTKTYTG4MMJY4YMQ2
响应标题:位置:
响应头:设置Cookie:SESSION=;最大年龄=0;Expires=1970年1月1日星期四00:00:00 GMT;路径=/;HttpOnly;SameSite=Lax
得到302
请求头:Cookie:JSESSIONID=15F0789B7182469477E5F713D64A9BF3
响应标题:位置:
响应头:设置Cookie:JSESSIONID=C201DF4673C664D0B62F166481386C3;路径=/;HttpOnly
拿200
这是一个Spring Boot 2.1.8.0版本的Zuul代理服务器和一个Spring Boot 2身份验证服务器,配置得尽可能靠近工作的Spring Boot 1.5.x身份验证服务器
安装程序
克隆
mvn spring启动:运行
克隆
mvn spring启动:运行
克隆
ng serve--baseHref=/角度示例/
复制步骤:
导航到
以“用户”/“密码”身份登录
此时会出现第三方身份验证页面。单击“同意”
此时将显示Angular主页
代理服务器
身份验证服务器配置
总之,我想理解为什么身份验证没有返回相同的状态参数,这会阻止代理服务器知道以前重定向到身份验证服务器的操作成功
下面是我们的Spring Security 4身份验证服务器的单点登录,该服务器正在工作:
获取路径]/302
响应标题:位置:
响应头:服务器:cloudflare
响应头:设置cookie:uu cfduid=dd164391fe59500752e3500ab3de6a23c1569423515;expires=周四,20年9月24日14:58:35格林威治标准时间;路径=/;域=[hostname].com;HttpOnly;稳妥
得到301
请求头:Cookie:JSESSIONID=C0C62552AAE5F7E8A420EEDD1869AA2AVCAP_ID=b87f667f-ec72-4a1d-6265-5979
响应标题:位置:
响应头:服务器:cloudflare
得到302
请求头:Cookie:cfduid=dd164391fe59500752e3500ab3de6a23c1569423515;JSESSIONID=C0C62552AAE5F7E8A420EEDD1869AA2A__VCAP_ID=b87f667f-ec72-4a1d-6265-5979
响应标题:位置:
得到302
响应标题:位置:
响应头:设置Cookie:SESSION=4d4be900-b461-4a57-b18b-c5e073e04b25;路径=/;保护HttpOnly
得到
请求头:Cookie:SESSION=4d4be900-b461-4a57-b18b-c5e073e04b25
邮政200
请求头:Cookie:SESSION=4d4be900-b461-4a57-b18b-c5e073e04b25
响应标题:位置:
响应头:设置Cookie:SESSION=661f73be-a34a-4d3a-83d7-c8a8c682d392;路径=/;保护HttpOnly
得到302
请求头:Cookie:SESSION=661f73be-a34a-4d3a-83d7-c8a8c682d392
响应标题:位置:
响应头:设置Cookie:SESSION=;最大年龄=0;Expires=1970年1月1日星期四00:00:10 GMT;路径=/;保护HttpOnly
得到301
请求头:Cookie:JSESSIONID=C0C62552AAE5F7E8A420EEDD1869AA2AVCAP_ID=b87f667f-ec72-4a1d-6265-5979
响应标题:位置:
得到302
请求头:cookie:cfduid=dd164391fe59500752e3500ab3de6a23c1569423515;JSESSIONID=C0C62552AAE5F7E8A420EEDD1869AA2A__VCAP_ID=b87f667f-ec72-4a1d-6265-5979
响应头:设置cookie:JSESSIONID=8B0E676E8BFE337A598BE060EEA76126;路径=/;HttpOnly
响应头:设置cookie:VCAP_ID=b87f667f-ec72-4a1d-6265-5979;路径=/;HttpOnly
获取路径]/200
可以在代理中进行修复:
auto-approve-scopes: '.*' # <-- Not for production.
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.authorizeRequests()
.antMatchers("/*.css","/*.js","/favicon.ico","/*.map","/robots.txt")
.permitAll()
.anyRequest().authenticated()
.and()
.logout()
.invalidateHttpSession(true).permitAll()
.logoutSuccessUrl("http://localhost:8085/angular-example/")
.and()
.csrf()
.disable();
// @formatter:on
}
server:
port: 8084
spring:
datasource:
url: jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1
jpa:
generate-ddl: true
hibernate:
ddl-auto: create
open-in-view: false
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.requestMatchers()
.antMatchers("/", "/oauth", "/login", "/api/authenticate", "/oauth/authorize")
.and()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage( "/login")
.permitAll()
.and()
.logout()
.permitAll()
.and()
.addFilter(new JwtAuthenticationFilter(privateKey, authenticationManager()))
.addFilter(new JwtAuthorizationFilter(privateKey, authenticationManager()));
// @formatter:on
}
auto-approve-scopes: '.*' # <-- Not for production.
clientDetails.setAutoApproveCsv("true");