我有实施类似例如登录接口故障的简单与JSF 2.1 CRUD Web应用程序,PrimeFaces 3.5,EJB 3.1,JPA(ORM)/ EclipseLink的,JAAS中,MySQL 在TomEE的邮件列表,我被告知,我LoginController.java我正在尝试注入 Logger,但 Logger 注入不受 CDI 管理。有人告诉我改用生产者。不知道它是什么,我在互联网上搜索并找到了这个示例 但是我仍然不满意它,所以请解释我必须修改什么才能为记录器实现生产者。
登录控制器.java
package controller;
import util.DateUtility;
import java.io.IOException;
import java.io.Serializable;
import java.security.Principal;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* Login Controller class allows only authenticated users to log in to the web
* application.
*
* @author Emre Simtay <emre@simtay.com>
*/
@Named
@SessionScoped
public class LoginController implements Serializable …Run Code Online (Sandbox Code Playgroud) 我只是想知道将用户映射到服务的目的是什么ktpass.例如我在Windows上运行ktpass如下:
ktpass -out <keytab location> -princ <host/domain.com> -mapUser useraccount@domain.com -mapOp add .........
当我们将用户映射到-princ是否意味着只有"useraccount"才能对服务进行身份验证?我们如何使用-add和-set选项?有什么不同?
我的问题是:我有很多用户想要使用我的服务,并通过kerberos(JASS Krb5LoginModule)进行身份验证,但我不想在jaas.config文件中指定许多用户主体名称.所以我正在考虑使用SPN,并映射用户.
我尝试在我的应用程序中有多个安全领域,但在部署过程中出现异常:
消息:检测到多个登录配置元素
web.xml 片段:
....
<security-constraint>
<display-name>Admin Constraint</display-name>
<web-resource-collection>
<web-resource-name>Admin Pages</web-resource-name>
<description/>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>ApplicationRealm</realm-name>
</login-config>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>mb-domain</realm-name>
</login-config>
<security-role>
<description/>
<role-name>admin</role-name>
</security-role>
<security-role>
<description/>
<role-name>user</role-name>
</security-role>
...
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我已经安装了 kerberos 服务器。
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = SNSPRJ.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
# EXAMPLE.COM = {
# kdc = kerberos.example.com
# admin_server = kerberos.example.com
# }
SNSPRJ.COM = {
kdc = kerberos.snsprj.com
admin_server = kerberos.snsprj.com
}
[domain_realm]
# .example.com = EXAMPLE.COM
# example.com …Run Code Online (Sandbox Code Playgroud)我正在运行一个分布式 Kafka-Broker,其中代理间通信是使用 SASL/SSL 设置的。为此,我调整了此处给出的 JAAS 配置。完成的文件如下所示:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_alice="alice-secret"
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN;
org.apache.kafka.common.security.scram.ScramLoginModule required;
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
Run Code Online (Sandbox Code Playgroud)
我注意到“KafkaServer”部分有 2 个管理员用户。我也经历了惨痛的教训才知道我两者都需要,但这是为什么呢?我有一种感觉,几个月前我已经读过(并忘记了)原因,但我似乎再也找不到它了。
我是Java平台的新手.我需要为桌面应用程序和Web应用程序使用Java的一些安全框架.现在我需要知道,我应该为桌面应用程序(假设是Java SE还是Java EE)和Web应用程序(假设JSP)研究哪些框架?
jaas ×6
jakarta-ee ×2
kerberos ×2
apache-kafka ×1
apache-tomee ×1
cdi ×1
java ×1
java-ee ×1
jboss ×1
jsf ×1
ktpass ×1
sasl ×1
security ×1
wildfly ×1