一旦用户通过身份验证并且在授权他使用端点之前更新身份验证对象中的权限
Update the authorities in the Authentication object once the user is authenticated and before authorizing him for an endpoint
我有一种情况,我必须根据用户的角色授权用户访问特定路径(端点)。
问题:用户通过身份验证后,我在身份验证对象中看到一组空的权限(授权过滤器使用它来确定用户的访问权限。)
我是 spring 安全方面的新手,需要帮助来解决这个问题。
背景:我们在组织中实施了一个授权服务器,它使用 oauth2 并让我们进行单点登录。 SSO 发生在前端,它从授权服务器获取令牌并将其嵌入到发送到我的服务器的每个请求中。现在我的服务器解码令牌并对用户进行身份验证。用户声明没有权限信息,我不允许在我的授权服务器中进行任何代码更改..
我在寻找什么:一旦用户通过身份验证并在他继续进行授权之前(我在我的网络安全配置中使用过滤器)我想调用数据库并获得用户各自的角色并保存它到我的身份验证对象,以便现在更新权限,用户将被授权到端点。
您可以创建一个 SecurityService
并从 @PreAuthorize
注释中调用它
@GetMapping()
@PreAuthorize("securityService.hasRole('ADMIN', authentication.principal.username)")
public String getData() {
return "response";
}
并使用 rest 模板从 SecurityService 调用授权服务器,例如:
public class SecurityService {
public boolean hasRole(String role, String username) {
String role = restTemplate.getRoleByUserName...;
// check role
return false/true
}
}
我有一种情况,我必须根据用户的角色授权用户访问特定路径(端点)。 问题:用户通过身份验证后,我在身份验证对象中看到一组空的权限(授权过滤器使用它来确定用户的访问权限。)
我是 spring 安全方面的新手,需要帮助来解决这个问题。
背景:我们在组织中实施了一个授权服务器,它使用 oauth2 并让我们进行单点登录。 SSO 发生在前端,它从授权服务器获取令牌并将其嵌入到发送到我的服务器的每个请求中。现在我的服务器解码令牌并对用户进行身份验证。用户声明没有权限信息,我不允许在我的授权服务器中进行任何代码更改..
我在寻找什么:一旦用户通过身份验证并在他继续进行授权之前(我在我的网络安全配置中使用过滤器)我想调用数据库并获得用户各自的角色并保存它到我的身份验证对象,以便现在更新权限,用户将被授权到端点。
您可以创建一个 SecurityService
并从 @PreAuthorize
注释中调用它
@GetMapping()
@PreAuthorize("securityService.hasRole('ADMIN', authentication.principal.username)")
public String getData() {
return "response";
}
并使用 rest 模板从 SecurityService 调用授权服务器,例如:
public class SecurityService {
public boolean hasRole(String role, String username) {
String role = restTemplate.getRoleByUserName...;
// check role
return false/true
}
}