gpt4 book ai didi

tomcat - 我如何以编程方式从 servlet 中调用身份验证,就像 j_security_check 会做的那样

转载 作者:行者123 更新时间:2023-11-28 21:54:54 25 4
gpt4 key购买 nike

我们有基于 Web 的表单登录身份验证,使用 j_securtiy_check 工作。我们想通过编程登录身份验证来更改它。让 servlet 验证传递给它的用户名和密码的正确方法是什么?该 servlet 显然未 protected 。

我们一直在试验这个 server.xml 领域:

<Realm  className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="UserDatabase"
userTable="app_user" userNameCol="login_name" userCredCol="password_value"
userRoleTable="user_perm" roleNameCol="permission_name"
allRolesMode="authOnly" digest="MD5"
/>

这样做的原因是,我们有一个 java webstart 客户端将登录信息发送到未 protected loginServlet。此 servlet 目前针对 JOSSO 单点登录服务进行身份验证,但我希望删除它并为初学者使用简单的 tomcat7 身份验证。然后最终迁移到 OpenAM。如果我能以编程方式生成 JSSESSIONIDSSO 值并将其填充到 cookie 中。

这是我找到的一些代码。这是调用身份验证的正确方法吗?

ApplicationContextFacade acf = (ApplicationContextFacade) this.getServletContext();

Field privateField = ApplicationContextFacade.class.getDeclaredField("context");
privateField.setAccessible(true);
ApplicationContext appContext = (ApplicationContext) privateField.get(acf);
Field privateField2 = ApplicationContext.class.getDeclaredField("context");
privateField2.setAccessible(true);
StandardContext stdContext = (StandardContext) privateField2.get(appContext);
Realm realm = stdContext.getRealm();

Principal principal = realm.authenticate(loginBean.getUsername(), loginBean.getPassword());
if (principal == null)
{
return 0;
}
GenericPrincipal genericPrincipal = (GenericPrincipal) principal;

System.out.println ("genericPrincipal=" + genericPrincipal.toString());

最佳答案

如果您已经在使用 Servlet 3.0 或更新版本,对于编程身份验证,请使用 HttpServletRequestlogin() 方法。

if (request.getUserPrincipal() == null) {
request.getSession(); // create session before logging in
request.login(username, password);
}

Servlet API 为您提供login()logout()以编程方式访问容器管理的安全性的方法。

关于tomcat - 我如何以编程方式从 servlet 中调用身份验证,就像 j_security_check 会做的那样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20505446/

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