Keycloak 前端和后端客户端
Keycloak frontend and backend clients
这与密钥斗篷客户端有关。我的前端连接到 public 客户端,后端连接到机密客户端。
我可以登录,获取代码,因为我正在使用 response_type=code,方法是打开“启用标准流程”。
此代码重定向和 returns 我的 Idtoken、refreshtoken 和令牌。
现在我需要与保密的后端通信,我想使用我从前端客户端收到的一些值来验证用户。
我该怎么做?
这是我的前端和后端配置文件
前端
{
"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
this is from realm setting
这可能对某些人有所帮助。
我的后端服务 springboot project with spring security keycloakAuthenticationProvider 确实验证了从前端 public 客户端收到的令牌。
从前端调用
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();
}
但我仍然无法在 ../keycloak 服务器提供的 token 端点的邮递员上正确使用它。
不管怎样,我的工作完成了。
这与密钥斗篷客户端有关。我的前端连接到 public 客户端,后端连接到机密客户端。 我可以登录,获取代码,因为我正在使用 response_type=code,方法是打开“启用标准流程”。 此代码重定向和 returns 我的 Idtoken、refreshtoken 和令牌。 现在我需要与保密的后端通信,我想使用我从前端客户端收到的一些值来验证用户。
我该怎么做?
这是我的前端和后端配置文件
前端
{
"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
this is from realm setting
这可能对某些人有所帮助。 我的后端服务 springboot project with spring security keycloakAuthenticationProvider 确实验证了从前端 public 客户端收到的令牌。
从前端调用
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();
}
但我仍然无法在 ../keycloak 服务器提供的 token 端点的邮递员上正确使用它。 不管怎样,我的工作完成了。