gpt4 book ai didi

java - 是否有一种与服务器无关的方式来实现 BASIC 身份验证?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:39 25 4
gpt4 key购买 nike

我正在尝试将 BASIC 身份验证添加到我的 RESTful 网络服务中。目前我有 Apache Tomcat 6.0 服务器的 BASIC 身份验证,但我需要在 WebSphere 应用程序服务器版本上部署我的 Web 服务。 6.1 也是如此,我在获取在 WebSphere 上运行的 BASIC 身份验证时遇到了问题。

Java 中是否有一种方法可以检查 HTTP 请求的身份验证 header ,如果提供的用户名/密码(以 Base64 编码)与已知帐户不匹配,则强制用户输入新的用户名/密码?

我曾尝试实现 Spring Security,但由于我的项目是完全没有使用 Spring 的,因此尝试让它工作非常痛苦,我正试图找到一个简单的解决方案来解决我相当简单的问题。

我目前使用的技术包括:Java、Jersey/JAX-RS、带有 Maven 插件的 Eclipse。

最佳答案

您应该能够设置 servlet filter它在您的 REST 处理程序之前执行,检查“授权”请求 header ,base 64 decodes它,提取用户名和密码,并进行验证。像这样:

public void doFilter(ServletRequest req,
ServletResponse res,
FilterChain chain) {
if (request instanceof HttpServletRequest) {
HttpServletRequest request = (HttpServletRequest) req;
String authHeader = Base64.decode(request.getHeader("Authorization"));
String creds[] = authHeader.split(":");
String username = creds[0], password = creds[1];
// Verify the credentials here...
if (authorized) {
chain.doFilter(req, res, chain);
} else {
// Respond 401 Authorization Required.
}
}
doFilter(req, res, chain);
}

所有的 servlet 容器都有一个标准的方法来配置过滤器链。

关于java - 是否有一种与服务器无关的方式来实现 BASIC 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6360801/

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