我正在使用glassfish和jaas模块.
我以这种方式配置了我的web.xml.
<security-constraint>
<web-resource-collection>
<web-resource-name>ALL Page for admin</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>file</realm-name>
</login-config>
<security-role>
<description>Administrator</description>
<role-name>user</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud)
这意味着所有想要访问我的Web应用程序的用户都需要是组用户.
然后在glassfish控制台上我需要勾选选项:Configuration - > server-config - > security - > Default Principal To Role Mapping
我的问题是为什么我需要将此默认主体勾选到角色映射?我如何更改我的web.xml以避免勾选它?
非常感谢
卢瓦克
我在glassfish v3.0.1 b22中使用jdbcRealm来保证安全性.它被设置为使用我的数据库中的USER表进行身份验证,方法是访问以下博客:http://blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication.如果我将摘要算法保留为纯文本,我的工作正常.但是,当我尝试使用SHA-256进行摘要算法时,它会停止工作.我所做的是在Glassfish中指定 - 安全 - 领域 - jdbcRealm - 我想要SHA-256的摘要(我只是在摘要字段中键入SHA-256).然后我写了一个简单的Java程序,将密码文本转换为SHA-256哈希.然后我将该哈希粘贴到数据库中的密码字段中.顺便说一句,密码字段是类型varchar(30).我不能再登录了.有一点我注意到我的简单Java程序每次为同一文本字段生成不同的哈希值.
下面是我简单的java程序:
MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "admin";
md.update(text.getBytes("UTF-8"));
byte[] digest = md.digest();
System.out.println(digest.toString());
Run Code Online (Sandbox Code Playgroud) Java EE6的新手,我正在尝试建立一个JDBCRealm.许多示例建议在SQL中手动创建用于保存用户/组信息的表.
是否有更标准的"JPA"方式呢?如果你使用例如OneToMany映射(这是我希望我可以使用的),Glassfish期望的表格不适合你最终会遇到的那种表格结构.
我读过Glassfish仍然使用JDBC来完成JDBCRealm,这可以解释原因.我发现这个博客提出了一种使用JPA的方法.
http://www.codeproject.com/Articles/238779/J2EE-JDBC-based-authentication-with-JPA-Entities-i
但有没有"官方"方式与JPA一起做?我想确保遵循最佳实践以确保我有一个安全的应用程序.
谢谢
我一直忙于在GlassFish 3.1上设置身份验证,特别是JDBC领域.我一直在假设:
我无处可配置"User_Group"表,但是我想知道服务器如何能够将用户与组匹配.不用说它没用.然而,仔细检查表明:
这是正确的,如果是这样,为什么要经历创建单独的"组"表的麻烦?由于看起来每次登录只能有一个组列表("email_address"),只是简单地将一个名为"groups"的列添加到"User"表并完全丢弃"Group"表就不那么容易了吗?
谢谢!