java - servlet 以编程方式设置身份验证

标签 java jakarta-ee java-8 keycloak servlet-3.0

在 JAVA EE 7 Web 应用程序 (WAR) 中,需要“手动”将用户设置为经过身份验证的(及其角色)。

基本上我有一个 token (JWT)和一组角色(调用Keycloak授权客户端Java API后获得)。

在获得 token 后,我希望将用户设置为经过身份验证(创建安全上下文),以便对安全 URL 的任何调用都不会返回 403 HTTP 错误。

在 web.xml 中仅定义了不同 URL 映射的角色和安全约束。

已研究过 HttpServletRequest.authenticate 方法,但尚未定义登录配置机制(不需要)。

(不使用 Spring 或其他框架)。

我的猜测是这是不可能的,应该使用 servlet 过滤器来验证安全性(而不是 web.xml 中的安全约束)

谢谢

最佳答案

您需要定义一个登录配置。对于 servlet 容器来说这是必需的。 输入类似:

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>default</realm-name>
</login-config>

在你的 web.xml 和 HttpServletRequest.authenticate 中应该可以工作。

并且您应该删除此 servlet 的安全约束 因为您管理应用程序中的安全性(如果尚未完成)。

亲切的问候,

拉尔夫

关于java - servlet 以编程方式设置身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57623850/

相关文章:

java - Jersey 2.5.x 中的 JSONConfiguration 去了哪里?

java - Java 中的 Kotlin "by lazy"相当于什么?

java - 在数据库中插入/选择 joda-time 日期类型

java - oracle 11g以及hibernate spring和jsf的集成

jsf - 使用 HttpServletRequest 和 LDAP 自动登录

java - 使用 Java 和 Nashorn 编写脚本的新手,有教程吗?

java - log4jdbc Java 8 兼容性

Java:创建了多少个对象?数组作为成员变量

jakarta-ee - 通过JMSCorrelationID过滤JMS消息接收器

java - 如何将比较函数传递到 Java 方法中?