gpt4 book ai didi

jakarta-ee - Jaspic:处理对未 protected 资源的访问

转载 作者:行者123 更新时间:2023-12-01 13:42:47 26 4
gpt4 key购买 nike

我正在研究 JASPIC,我从头开始了一个小项目来探索它以及它在 Wildfly 上的表现。第一步是调用我的 SAM validateRequest 方法并返回未 protected 资源的内容,即 index.html 页面。好的,调用了 validateRequest。我检查 MessageInfo javax.security.auth.message.MessagePolicy.isMandatory 属性是否设置为 false。困难时期来了。在我的第一次尝试中,如果属性设置为 false validateRequest 返回 AUTH_SUCCESS 值,但浏览器返回 403 错误。在我第二次尝试 validateRequest 返回 null 时,浏览器返回 200 但响应中没有数据(与 index 无关.html)。我应该怎么做才能正确处理 servlet 请求?可以找源here .谢谢。

最佳答案

What should I do to handle servlet requests correctly?

了解并遵守 specification 的相关部分.对于典型的面向 Servlet 的 ServerAuthModule (SAM),它们是:

  • 服务器端消息处理模型的一般概述(第 2 点是调用 validateRequest 的地方),由 § 1.2.5 和 § 2.1.5.2 提供。后者以及第 25 页(PDF 中第 39 页)的模型状态图特别重要。
  • HTTP Servlet 容器配置文件对上述内容的专门化,可在 § 3.8.3.2、§ 3.8.4 和 § 3.9 中找到。

当然,由于您也实现了工厂,因此您应该注意许多不同重要性的额外细节,因此您可能更难逃避阅读本书的前三章。他们的全部。

validateRequest返回SUCCESS

每当您的 SAM 的 validateRequest 实现返回 AuthStatus.SUCCESS(null 不是一个选项),它必须在返回之前将调用者的身份传达给 (Servlet) 运行时,无论调用者实际上已经过身份验证还是匿名。这可以通过处理 CallerPrincipalCallback 和/或至少一个 GroupPrincipalCallback(可以将组分配给匿名调用者)来实现,通过运行时提供的 回调处理程序。使用 null Principal(名称)参数构造这些回调中的任何一个,向运行时发出调用者被视为匿名的信号,或者没有任何组与之关联。再次注意,兼容的运行时不会默认假设调用者是匿名的;必须明确告知,否则结果不确定。

SUCCESS 的语义是允许请求传播到(基于 Servlet 的)服务端点,iff 基于组(角色)的调用者授权成功。然而,为了进行授权,运行时必须知道调用者的身份,这就是为什么需要上述回调的原因。

AuthStatus 值与 HTTP 响应状态代码

两者之间的关系可能有点令人困惑。前者是协议(protocol)中立的,并且本质上是消息处理模型中的状态转换标签。理论上他们限制了后者;实际上,由于多个组件和应用程序服务器本身可能会改变响应的状态,因此建议您自己在非 AuthStatus.SUCCESS/AuthStatus.SEND_SUCCESS validateRequest/secureResponse 返回案例。

关于jakarta-ee - Jaspic:处理对未 protected 资源的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536410/

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