问题标签 [jdbcrealm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 具有摘要式身份验证的 Glassfish JDBC 领域
我正在开发一个 Java REST 项目,我目前正在使用带有基本身份验证的 JDBC 领域。我正在存储密码的 SHA-256 哈希,基本身份验证工作正常。为了切换到 Digest 身份验证,我将领域的 JAAS 上下文从 jdbcRealm 更改为 jdbcDigestRealm,并在 web.xml 中将 auth-method 设置为 DIGEST。
由于某种原因,如果我提供哈希本身,这会导致身份验证成功。当设置为摘要身份验证时,Glassfish 似乎不会自动散列提供的密码字符串,然后检查它,就像基本身份验证一样。
这是我的领域配置:
- JAAS 上下文:jdbcDigestRealm
- JNDI:jdbc/restshop
- 用户表:用户
- 用户名栏:用户名
- 密码栏:密码
- 组表:user_role
- 组名列:role_name
- 摘要算法:SHA-256
- 编码:十六进制
领域配置中还有密码加密算法字段,我不确定它的目的是什么。
任何帮助表示赞赏,如果您需要任何其他信息,我会提供。谢谢。
login - 容器重启后所有 glassfish 登录模块都停止工作
这是我遇到的另一个登录模块问题的扩展版本。我诊断出一些更重要的细节,这些细节鼓励我开始新的话题。Glassfish 重新启动后,所有登录模块都停止工作。更有趣的是,Glassfish 报告了正确加载的模块。
但在基本身份验证期间,我无法使用任何安全领域。我用新用户尝试了自定义 jdbcRealm 和预配置的 fileRealm 它最终得到了这个:
还有这个
此外,我什至不能使用更复杂的 asadmin 命令,因为我在 server.log 中收到“未经授权的错误登录名或密码”
我检查了 LoginContext 实现,它看起来像这样
一直走错路,返回null。
我不手动操作配置文件。我可以以某种方式破坏它们以阻止 LoginModules 吗?
上面的 ConfigurationEntry 正在读取哪个配置文件?
在这个不幸的 MySQL 数据库重启问题发生之前。Glassfish 连接池的可用空间比数据库允许的要多。从数据库中删除连接后,更改适当的连接号后,我重新启动了容器,一切都崩溃了。
login.conf 存在于域目录中,看起来没问题。
希望得到帮助
mysql - 如何在 Apache Tomcat 7 中设置 JDBCRealm?
我希望从 MySQL 数据库加载用户(允许登录到我的站点)。为此,我想为我的 Apache Tomcat 7 应用程序服务器设置一个 JDBCRealm。
我已经阅读了文档并使用 JNDI 资源 (jdbc/foo4) 创建了一个数据库连接。该资源有效(我已经在我的应用程序中使用它来检索数据)。似乎不起作用的是将领域与此资源联系起来。
我的配置文件如下所示:
src\main\webapp\META-INF\context.xml
在我的标准部署描述符中,我输入了以下内容:
src\main\webapp\WEB-INF\web.xml
我使用这个 SQL 脚本创建了一个示例用户:
安全.sql
创建表用户( user_name varchar(15) not null 主键,user_pass varchar(15) not null );
创建表 user_roles ( user_name varchar(15) not null,
role_name varchar(15) not null, 主键 (user_name, role_name) );INSERT INTO users(user_name,user_pass)VALUES('benny','test'); 插入到 user_roles(user_name,role_name)VALUES('benny','admin');
但我无法使用用户“benny”和密码“test”登录。我可以使用用户“tomcat”和密码“tomcat”登录(因为它是在 %CATALINA_HOME%\conf\tomcat-users.xml 中定义的),但我无法使用我自己的用户从我的 MySQL 数据库登录。
当然,我的 Tomcat 服务器使用的是 MySQL 驱动程序(我将“mysql-connector-java-5.1.9.jar”放入 %CATALINA_HOME%\lib)。
当我尝试登录时收到以下错误消息:
有人看到错误吗?
tomcat - 如何为每个组中具有不同角色的用户实现 JDBCRealm?
我想使用 JDBCRealm 进行登录身份验证,但是我没有一个 user_role 表,而是有一个 groups 表,它有一个指向每个包含用户的组表的指针,并且它在该组中的角色,我应该如何为这种情况实现 JDBCRealm?
谢谢你
security - EJB 容器中的 Java EE 安全角色以及它们如何从 Web 容器传播和/或与 Web 容器相关
前几天我在我正在开发的应用程序上进行了测试。我想看看安全性是如何从 Web 层传播到 Java EE 容器的。我写了几页,一个支持 bean 和一个 EJB 无状态 bean 来做到这一点。我进行了设置,以便我可以登录并检查我在 Web 层和 EJB 容器上的主体和角色。
对 EJB 上下文的调用表明我与通过 Faces 上下文的调用具有相同的主体。然而,当 web 层报告 (getRole) 确认我在数据库中设置的组中时,对 EJB 端的调用失败并引发了异常。基本上它说它可以找到没有像我问它关于在其上下文中配置的组。事实上,我没有在 EJB 端进行任何安全配置。
我似乎在这里遗漏了一些东西。我需要什么来确保双方在角色/组方面保持同步。我已经配置了 Web 端,以便它通过 JDBC 领域将用户映射到组(这不是自定义的,而是标准配置选项)。
请注意,我使用的是 Glassfish 3.1.1,并且我创建了一个自定义的 JDBC 领域,以我认为更简洁的方式将我的组与我的用户匹配(即在两者之间使用查找表)。FWIW,我在软件领域已经有很长一段时间了,但刚刚习惯了全栈 Java EE(大约一年)。
java - 需要帮助在 Tomcat 中设置多个领域
我正在尝试在 tomcat 中设置两个领域,但由于某种原因它不允许我这样做。我想使用标准的 UserDatabaseRealm (conf/tomcat-users.xml) 来做管理工作(比如部署 webapps),但我想要一个自定义领域来为特定的 webapp 进行身份验证。
所以,我试着把它放在我的 webapp 的上下文中:
这实际上只是 server.xml 中的内容的副本,并进行了一些更改:
名称从 UserDatabase 更改为 CustomDatabase。
路径名是绝对路径名(与我用于主领域的相同)。
我总是遇到同样的错误:
而且我不知道它在告诉我什么。它在谈论什么组件?
除了上面的上下文,我还尝试了其他一些方法,但它总是给出同样的错误:
我尝试使用 GlobalNamingResources 标记包装资源以及是否存在相同的错误。
我尝试将 Resource 的 auth 属性更改为 Container 和 Application 并得到相同的错误。
我错过了什么?谷歌的所有帮助主要是人们搞砸了他们的主要领域(我的很好)而不是试图配置第二个领域。
java - 调试自定义 tomcat 领域
我正在使用 maven 和 eclipse juno 为 Tomcat 7 开发一个自定义领域。
它看起来很像使用 LDAP 身份验证和 JDBC 授权实现 Tomcat 领域中描述的解决方案,其中:
- 一个适应的 hasRole 方法,因为接口略有改变(附加 Wrapper 作为第一个参数);
- 一些内部特定的东西。
当我尝试使用 eclipse 调试这个领域时,我不断遇到以下异常:
据我所知,这个类在 $TOMCAT_ROOT/lib/tomcat-coyote.jar 中:
该项目非常简单,一个 Maven 构建的 jar 以这种方式配置:
生成的 jar 放在 $TOMCAT_ROOT/lib 中。
任何的想法 ?
补充:问题只发生在 ldaps 连接上。使用非 SSL ldap 连接,一切正常。
即使我在 m 中手动设置参数时也是一个重载的“open”方法,代码如下:
}
...奇怪的异常发生在 InitialDirContext 构造函数中。
更新:如果我将 javax.net.ssl.trustStore 属性设置为本地文件而不是 jar 中包含的文件,它可以工作。
所以 :
作品。知道为什么吗?
tomcat - 配置 Tomcat 7 领域中的错误
嗨,任何人都可以帮我解决这个问题,我花了整个晚上但无法让它工作:(这是我的 web.xml
当我输入一个磨损的用户名或密码时,它会导致错误的User.jsp(它必须连接到数据库),但是如果我输入正确的用户名和密码,它会显示: message Invalid direct reference to form login page description The request sent客户端在语法上不正确(对表单登录页面的直接引用无效)。
有人知道它有什么问题吗?提前致谢
web-services - Glassfish 仍然使用默认领域
我在战争中捆绑了一个安全的 Web 服务(通过 ssl 的消息身份验证),我正在尝试使用 jdbcRealm 来验证用户。jdbcRealm 可以与其他耳朵应用程序一起正常工作,但不适用于这个 .war 实际上 glassfish 仍在使用 fileRealm,尽管在 web.xml 中完成了配置
网页.xml:
在控制台中我得到这个:
如何解决这个问题?谢谢。ps:我正在使用带有 jdk6 的 Glassfish 3.1.2.2 b5
tomcat - Tomcat JDBC 与 DataSource 领域
对于testapp
web.xml 中包含以下内容的 webapp(除其他外)
考虑以下两个 Tomcat Realm 配置:
配置 1 - JDBC 领域:
在.../webapps/testapp/META-INF/context.xml
配置 2 - 数据源领域:
在.../webapps/testapp/META-INF/context.xml
:
并在.../conf/context.xml
:
由于我不清楚的原因,配置 1 对我们有用,但配置 2 不适用。请注意,我们使用配置 2 中的 Context.xml 资源在我们的代码中到处连接到 MySQL,它工作得很好。然而,当一个 tomcat Realm 尝试使用它时,身份验证总是失败,即使它似乎在做与配置 1 相同的事情。
任何人都知道为什么会这样?