Tag: jaas

JBoss 7.1基于数据库的JAAS身份validation – 身份validation失败

我试图在JBoss 7.1应用程序服务器上实现基于数据库的JAAS身份validation,但得到以下错误。 任何指针都会有所帮助。 我已经分享了配置细节。 14:46:03,807 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule](http-localhost / 127.0.0.1:8080-2)获取用户密码 14:46:03,808 DEBUG [org.jboss.jca.core。 connectionmanager.pool.strategy.OnePool](http-localhost / 127.0.0.1:8080-2)AppDS:returnConnection(40c2d8ac,false)[1/9] 14:46:03,808 TRACE [org.jboss.security.auth.spi .DatabaseServerLoginModule](http-localhost / 127.0.0.1:8080-2)resumeAnyTransaction 14:46:03,808 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule](http-localhost / 127.0.0.1:8080-2) 用户’test_user’已通过validation,loginOk = true 14:46:03,808 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule](http-localhost / 127.0.0.1:8080-2)abort 14:46:03,809 ERROR [org。 jboss.security.authentication.JBossCachedAuthenticationManager](http-localhost / 127.0.0.1:8080-2) 登录失败:javax.security.auth.login.FailedLoginException:密码不正确/密码在 org.jboss.security.auth.spi中是必需的 。 UsernamePasswordLoginModule.login(UsernamePasswordLogin 在sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)[rt.jar:1.7。 0_25] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)[rt.jar:1.7.0_25] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)[rt.jar:1.7.0_25] at java.lang.reflect .Method.invoke(未知来源)[rt.jar:1.7.0_25] […]

使用JAAS LdapLoginModule通过ActiveDirectory进行身份validation时遇到FailedLoginException

我正在拉我的头发试图让LDAP身份validation与Active Directory一起使用。 我们刚刚设置了一个SharePoint Server 2010,我们认为根据Active Directory对用户进行身份validation也是一个好主意,因为它已经存在于SharePoint中。 我们的环境是Windows Server 2008 R2 Standard。 我有一个用户名为ahsieh@rdl.com.tw用户 根据这个答案https://serverfault.com/a/130556我的提供者URL应该是ldap://192.168.0.81:389/CN=Users,DC=rdl,DC=com,DC=tw (注意,而不是使用vm-sps.rdl.com.tw的主机名,我选择使用IP地址,因为我没有时间为所述服务器配置DNS条目) 为了确保,我在服务器上运行了dsquery命令: 但是,我只是无法获得身份validation工作。 我根据LdapLoginModule API尝试了所有三种类型的JAAS配置 以下是我遇到的错误: 1.搜索优先模式: 注意:我没有指定authzIdentity,因为我在AD上没有设置 JAAS配置: AESLogin_AD1 { com.sun.security.auth.module.LdapLoginModule REQUIRED userProvider=”ldap://192.168.0.81:389/CN=Users,DC=rdl,DC=com,DC=tw” userFilter=”(&(uid={USERNAME})(objectClass=User))” useSSL=false debug=true; }; 结果: [LdapLoginModule] search-first mode; SSL disabled [LdapLoginModule] user provider: ldap://192.168.0.81:389/CN=Users,DC=rdl,DC=com,DC=tw [LdapLoginModule] searching for entry belonging to user: ahsieh@rdl.com.tw [LdapLoginModule] authentication failed [LdapLoginModule] aborted authentication […]

在JBoss / JAAS中使用HTTP Request.login

我已经成功设置了JBoss安全域,并且可以使用BASIC身份validation进行身份validation(如web.xml中所定义)。 这一切都运作良好。 但我无法弄清楚如何使用http request.login方法。 以下安全域(来自jboss-web.xml)适用于BASIC身份validation: /myapp java:/jaas/myapp-realm 但是当我使用request.login时如下: public void login() { FacesContext context = FacesContext.getCurrentInstance(); HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest(); try { request.login(username, password); } catch (ServletException ex) { java.util.logging.Logger.getLogger(UserLogin.class.getName()).log(Level.SEVERE, null, ex); } } 我得到以下exception: javax.servlet.ServletException: Failed to authenticate a principal 我知道用户名/密码很好(使用BASIC auth工作正常)。 我有TRACE级别登录,看起来甚至没有尝试进行身份validation。 我错过了什么? 如果您需要有关我的setup / config的更多详细信息,请参阅http://java-web-development.blogspot.com/2011/07/jee-6-security-part-two-implementation.html 。 我正在使用JBoss 6。

java LoginContext.login()如何工作?

我有这个代码来创建一个java客户端的配置来连接到JBoss应用程序服务器: System.setProperty( “java.security.auth.login.config”, “auth.conf” ); LoginContext auth = new LoginContext( “myAuth”, new LoginCallbackHandler( username, password ) ); auth.login(); auth.conf文件包含以下行: myAuth { org.jboss.security.ClientLoginModule required; }; 现在,代码中的其他地方(LoginContext auth在那里不知道)我有一个EJB,它执行initialContext.lookup( jndiName )和一个narrow()来访问JBoss应用程序服务器上的Bean。 如果第一步的登录信息正确,则此narrow仅成功。 题 登录信息如何从LoginContext传播到narrow() ? 我认为这两个地方之间没有任何联系。 而且,我怎么能在一个客户端内进行两个或更多不同的登录?

Spring Security JAAS身份validation授权问题

在Spring Security中,使用DefaultJaasAuthenticationProvider配置进行Linux用户名/密码的登录validation。 JpamLoginModule用于身份validation。 我成功通过身份validation,但我在授权方面遇到问题(ROLE_USER,ROLE_ADMIN),我正在获取HTTP状态403 – 访问被拒绝错误。 以下配置我在spring-security.xml中使用 RoleGranter.java代码 public class RoleGranter implements AuthorityGranter { public RoleGranter() { System.out.print(“=== Creating My Authority Granter ===”); } @Override public Set grant(Principal principal) { return Collections.singleton(“ROLE_ADMIN”); } } 建议会非常有帮助

如何使用Windows Java客户端保存Kerberos服务票证?

我编写了一个在Windows下运行的简单Java HTTP客户端。 客户端与需要通过SPNego进行Kerberos身份validation的Web服务器进行通信。 我遇到了两个问题: 服务票证不存储在我的凭证缓存中。 执行请求后,我希望在C:\Users\\krb5cc_下看到存储在我的凭证缓存中的Kerberos服务票证 – 假设Java将服务票据存储在凭证缓存中,我是错误的吗? 我想重新使用客户端A中获取的服务票据来处理客户端B中的请求(其中两个客户端都是同一台计算机上的Java应用程序)。 这可能与Java有关吗? 如果我在循环中运行下面的代码一百次,它只能工作n次(其中n是1到100之间的随机数)。 失败的请求返回401错误消息,因为Java无法检索服务票证(请记住:由于我的应用程序不在请求之间存储服务票证,因此它会尝试从TGT为每个请求获取新的服务票证) 。 我已将错误消息添加到此问题的底部。 我在JDK的bin文件夹中通过kinit创建了一个TGT。 以下代码段用于制作简单的GET请求: static void testJavaHttpKerberosAuthentication() throws IOException { URL obj = new URL(URI); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); int responseCode = con.getResponseCode(); System.out.println(“\nSending ‘GET’ request to URL : ” + URI); System.out.println(“Response Code : ” + responseCode); BufferedReader in = new […]

JBOSS 7有两个上下文。 一个使用SSL Mutual Auth,另一个只使用SSL

我们在配置JBoss时遇到问题。 我们正在配置它,以便可以同时使用Mutual auth并且不使用它。 喜欢: https://example.com/contextA/ (需要SSL相互身份validation) https://example.com/contextB/ (只需SSL) 可能吗? 我能做的是使JBoss或所有JBoss使用SSL相互认证或不使用。 如何将其配置为同时进行? 我的contextA web.xml: ContextA services /* GET * CONFIDENTIAL CLIENT-CERT 我的contextA jboss-web.xml RequireCertificateDomain ContextB web.xml ContextB *.jsp true 10 true index.jsp SecureApplicationConstraint ContextB Auth applications are secured /login/* Only Users with roles are allowed USER CONFIDENTIAL SecureChannelConstraint Entire site is protected through SSL /contextB/* Require […]

使用Primefaces进行j_security_check

如何使用Primefaces实现j_security_check ? 通常在JSP中如果要使用JAAS进行登录,则登录表单通常为: Username: Password: 但是我们如何在JSF或Primefaces中实现它! 这将是什么行动 我们如何摆脱像formId:componentId这样的id或名称 p:commandButton默认情况下在Primefaces中被ajaxified,所以它如何以非ajax方式提交表单 我需要使用Primefaces实现JAAS表单身份validation,我在这里分享解决方案; 它可能对某人有用。

Java和Kerberos身份validationkrb5.conf与System.setProperty的对比

请帮我解决kerberos + Java问题。 我有一个简单的Java程序,可以使用Kerberos对Windows Active Directory进行身份validation。 以下java代码工作正常,没有任何问题,并打印为true- public class KerberosAuthenticator { public static void main(String[] args) { String jaasConfigFilePath = “/myDir/jaas.conf”; System.setProperty(“java.security.auth.login.config”, jaasConfigFilePath); System.setProperty(“java.security.krb5.realm”, “ENG.TEST.COM”); System.setProperty(“java.security.krb5.kdc”,”winsvr2003r2.eng.test.com”); boolean success = auth.KerberosAuthenticator.authenticate(“testprincipal”, “testpass”); System.out.println(success); } } 当我指定krb5.conf文件的路径而不是手动指定领域和kdc时,它会错误地说“Null领域名称(601) – 未指定默认领域”。 以下是代码 – public class KerberosAuthenticator { public static void main(String[] args) { String jaasConfigFilePath = “/myDir/jaas.conf”; System.setProperty(“java.security.auth.login.config”, jaasConfigFilePath); […]

Kafka Java Producer与kerberos

在kerberosed环境中向kafka主题发送消息时收到错误。 我们在hdp 2.3上有集群 我跟着这个http://henning.kropponline.de/2016/02/21/secure-kafka-java-producer-with-kerberos/ 但是对于发送消息,我必须首先明确地执行kinit,然后才能将消息发送到kafka主题。 我试图通过java类编织,但这也行不通。 PFB代码: package com.ct.test.kafka; import java.util.Date; import java.util.Properties; import java.util.Random; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; public class TestProducer { public static void main(String[] args) { String principalName = “ctadmin”; String keyTabPath = “/etc/security/keytabs/ctadmin.keytab”; boolean authStatus = CTSecurityUtil.loginUserFromKeytab(principalName, keyTabPath); if (!authStatus) { System.out.println(“Authntication fails, try something else ” + authStatus); […]