Java JAX-RS和自定义授权
我正试图保护JAX-RS端点的安全,目前正试图弄清楚身份验证和授权是如何工作的。大多数示例都非常简单,因为它们仅通过web.xml从JavaEEAppServer角色中复制Java JAX-RS和自定义授权,java,jax-rs,restful-authentication,Java,Jax Rs,Restful Authentication,我正试图保护JAX-RS端点的安全,目前正试图弄清楚身份验证和授权是如何工作的。大多数示例都非常简单,因为它们仅通过web.xml从JavaEEAppServer角色中复制 我想知道如何使用JavaEE以外的东西作为角色。例如:我想使用会话或某种令牌(或某种标识符)。这取决于您使用的JAX-RS实现。我正在使用嵌入式 看 一旦在HttpServletRequest中有了Principal,就可以将它们注入JAX-RS请求的上下文中 public abstract class AbstractRe
我想知道如何使用JavaEE以外的东西作为角色。例如:我想使用会话或某种令牌(或某种标识符)。这取决于您使用的JAX-RS实现。我正在使用嵌入式 看 一旦在
HttpServletRequest
中有了Principal
,就可以将它们注入JAX-RS请求的上下文中
public abstract class AbstractResource {
private Principal principal;
@Context
public void setSecurityContext(SecurityContext context) {
principal = context.getUserPrincipal();
}
protected Principal getPrincipal() {
return principal;
}
}
@Path("/some/path")
public class MyResource extends AbstractResource {
@GET
public Object get() {
Principal user = this.getPrincipal();
// etc
}
}
免责声明:除非您真的、真的、真的需要,否则不要扮演您自己的安全框架的角色 看看这件运动衫的功能。它读取授权标头,该标头以与通常理解的格式(HTTP Basic)不同的格式保存凭据。它会将这些凭据转换为角色,然后您可以使用这些角色来实现安全性(@RolesAllowed),如果您添加了实际执行的。试着看看这些过滤器是如何工作的
public abstract class AbstractResource {
private Principal principal;
@Context
public void setSecurityContext(SecurityContext context) {
principal = context.getUserPrincipal();
}
protected Principal getPrincipal() {
return principal;
}
}
@Path("/some/path")
public class MyResource extends AbstractResource {
@GET
public Object get() {
Principal user = this.getPrincipal();
// etc
}
}