资源服务器的表单登录可按需开启

This commit is contained in:
b2baccline
2021-09-02 21:07:22 +08:00
parent 83ae28a942
commit ed7b23fb2f
3 changed files with 28 additions and 4 deletions

View File

@@ -159,7 +159,10 @@ public class RemoteOpaqueTokenIntrospector implements OpaqueTokenIntrospector {
private HTTPResponse adaptToNimbusResponse(ResponseEntity<String> responseEntity) {
HTTPResponse response = new HTTPResponse(responseEntity.getStatusCodeValue());
response.setHeader(HttpHeaders.CONTENT_TYPE, responseEntity.getHeaders().getContentType().toString());
MediaType contentType = responseEntity.getHeaders().getContentType();
if (contentType != null) {
response.setHeader(HttpHeaders.CONTENT_TYPE, contentType.toString());
}
response.setContent(responseEntity.getBody());
if (response.getStatusCode() != HTTPResponse.SC_OK) {
throw new OAuth2IntrospectionException("Introspection endpoint responded with " + response.getStatusCode());

View File

@@ -1,6 +1,7 @@
package com.hccake.ballcat.common.security.oauth2.server.resource;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.hccake.ballcat.common.security.properties.OAuth2ResourceServerProperties;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
@@ -49,11 +50,21 @@ public class ResourceServerWebSecurityConfigurerAdapter extends WebSecurityConfi
@Override
protected void configure(HttpSecurity http) throws Exception {
// 表单登录
if (oAuth2ResourceServerProperties.isEnableFormLogin()) {
String formLoginPage = oAuth2ResourceServerProperties.getFormLoginPage();
if (StrUtil.isNotEmpty(formLoginPage)) {
http.formLogin().loginPage(formLoginPage);
}
else {
http.formLogin();
}
}
// @formatter:off
http
// 表单登录
.formLogin()
.and().rememberMe()
// 记住我
.rememberMe()
// 拦截 url 配置
.and()

View File

@@ -28,6 +28,16 @@ public class OAuth2ResourceServerProperties {
*/
private boolean iframeDeny = true;
/**
* 开启表单登录
*/
private boolean enableFormLogin = false;
/**
* 表单登录地址
*/
private String formLoginPage = null;
/**
* 共享存储的token这种情况下利用 tokenStore 可以直接获取 token 信息
*/