资源保护
授权服务扩展组件中已经自动配置了 资源服务 的安全性。这个配置提供了可扩展点,可以用来配置任何需要保护的 URL 模式。
定义受保护的资源
假设我们有如下 REST 控制器:
@RestController
public class GreetingController {
@GetMapping("/greeting/hello")
public String hello() {
return "Hello!";
}
@PostMapping("/greeting/hi")
public String hi() {
return "Hi!";
}
}
如果需要用 access token 保护 /greeting/**
端点,需要定义一个实现 io.jmix.core.security.AuthorizedUrlsProvider
接口的 bean,并从 getAuthenticatedUrlPatterns()
方法返回 URL 模式列表:
@Component
public class GreetingAuthorizedUrlsProvider implements AuthorizedUrlsProvider {
@Override
public Collection<String> getAuthenticatedUrlPatterns() {
return List.of("/greeting/**");
}
@Override
public Collection<String> getAnonymousUrlPatterns() {
return List.of();
}
}
发送 access token
上面的配置完成后,所有发送到 /greeting/**
端点的请求都将需要包含 access token 的 Authorization
请求头。请求头的值必须带有 Bearer
,后面跟上 token 值。示例:
GET /greeting/hello HTTP/1.1
Host: server.example.com
Authorization: Bearer <ACCESS_TOKEN>
保护通用 REST 组件端点
当应用程序中添加了 通用 REST 扩展组件后,所有的 REST 端点都自动会受到授权服务组件的保护。也就是说,访问任何 REST 端点时,都需要先获取 access token 并在 HTTP 请求的 Authorization
请求头中使用。请求头的值必须带有 Bearer
,后面跟上 token 值。示例:
GET /rest/entities/User HTTP/1.1
Host: server.example.com
Authorization: Bearer <ACCESS_TOKEN>
本页是否有帮助?
感谢您的反馈