gpt4 book ai didi

java - JAX-RS 和自定义授权

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:59 24 4
gpt4 key购买 nike

我正在尝试保护 JAX-RS 端点的安全,目前正在尝试弄清楚身份验证和授权的工作原理。大多数示例都非常简单,因为它们仅通过 web.xml 搭载 Java EE 应用服务器角色。

我想知道如何使用 Java EE AS 角色以外的东西。例如:我想使用 session 或某种 token (或某种标识符)。

最佳答案

这完全取决于您使用的 JAX-RS 实现。我正在使用 Jersey关于嵌入式 Jetty .

SecurityHandler sh = new SecurityHandler();

// the UserRealm is the collection of users, and a mechanism to determine if
// provided credentials are valid
sh.setUserRealm(new MyUserRealm());

// the Authenticator is a strategy for extracting authentication credentials
// from the request. BasicAuthenticator uses HTTP Basic Auth
sh.setAuthenticator(new BasicAuthenticator());

参见 How to Configure Security with Embedded Jetty

一旦您在 HttpServletRequest 中拥有了 Principal,您就可以将它们注入(inject)到 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
}
}

关于java - JAX-RS 和自定义授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5114272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com