Keycloak KeyClope前端和后端客户端
这与keydepate客户端有关。我的前端连接到公共客户端,后端连接到机密客户端。 我可以登录,获取代码,因为我通过打开“标准流启用”使用response_type=code。 此代码重定向并返回我Idtoken、refreshtoken和token。 现在我需要与后端通信,这是保密的,我想使用我从前端客户端收到的一些值来验证用户 我该怎么做 这是我的前端和后端配置 前端Keycloak KeyClope前端和后端客户端,keycloak,keycloak-rest-api,Keycloak,Keycloak Rest Api,这与keydepate客户端有关。我的前端连接到公共客户端,后端连接到机密客户端。 我可以登录,获取代码,因为我通过打开“标准流启用”使用response_type=code。 此代码重定向并返回我Idtoken、refreshtoken和token。 现在我需要与后端通信,这是保密的,我想使用我从前端客户端收到的一些值来验证用户 我该怎么做 这是我的前端和后端配置 前端 { "realm": "xyz", "auth-server-
{
"realm": "xyz",
"auth-server-url": "http://localhost:8333/auth/",
"ssl-required": "external",
"resource": "frontend-app",
"public-client": true,
"confidential-port": 0,
"enable-cors": true
}
后端
keycloak.auth-server-url=http://localhost:8333/auth
keycloak.realm=xyz
keycloak.resource=backend-app
keycloak.principal-attribute=preferred_username
keycloak.bearer-only=true
keycloak.credentials.secret=xxx-xxx-xxx
这可能对某人有所帮助。
我的后端服务是springboot项目,带有spring security KeyDoppeAuthenticationProvider,它对从前端公共客户端接收的令牌进行身份验证
前端呼叫
axios({
method: 'GET',
url: '/api/authenticate',
headers:{'Authorization': 'Bearer '+keycloak.token+''}
}).then((r) => {
console.log("response",r)
})
后端调用
@GetMapping("/api/authenticate")
public ResponseEntity<SecureUserDto> authenticate() {
String username = SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString();
User user = userRepository.findWithPrivilegesByUsername(username);
return ResponseEntity.ok();
}
@GetMapping(“/api/authenticate”)
公共响应身份验证(){
字符串用户名=SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString();
User User=userRepository.findWithPrivilegesByUsername(用户名);
返回ResponseEntity.ok();
}
但我仍然无法在Key斗篷服务器提供的../token端点的邮递员上正确获取它。
不管怎样,我的工作已经完成了