Tag: 认证

如何在Wildfly 8上的Picketbox / Undertow中捕获FailedLoginException以应用CORS

在ContainerResponseFilter的帮助下,我能够将CORS头应用于所有传出的响应,并且使用ExceptionMapper,我可以在所有错误和exception上执行相同的操作, 除了 Picketbox / Undertow应该在Wildfly中抛出的任何与身份validation相关的exception。 无论我尝试什么,我的ExceptionMapper都不会捕获它,因此,前端无法读取401状态,因为响应没有附加CORS头(XHR HTTP状态代码只是变为0)。 我正在使用这个 PBKDF2设置来对MySQL数据库进行身份validation,起初我认为可能因为身份validation是在一个单独的模块中运行的,所以我的应用程序没有捕获它,但即使将所有身份validation代码移到我自​​己的身份之后也是如此应用程序我有同样的问题。 这是我尝试使用错误密码进行身份validation时获得的日志条目(当我根本不发送任何凭据时,我得到一个非常类似的日志条目): 2014-11-29 16:11:08,053 TRACE [org.jboss.security](默认任务-4)PBOX000224:结束getAppConfigurationEntry(PBKDF2DatabaseDomain),AuthInfo:AppConfigurationEntry []:[0] LoginModule类:com.example.myapplication。 security.SaltedDatabaseServerLoginModule ControlFlag:LoginModuleControlFlag:required选项:name = dsJndiName,value = java:/ user name = principalsQuery,value = SELECT Hash FROM account WHERE ID =? name = rolesQuery,value = SELECT Role ,’角色’FROM帐户WHERE account 。 ID =? 2014-11-29 16:11:08,053 TRACE [org.jboss.security](默认任务-4)PBOX000236:开始初始化方法2014-11-29 16:11:08,053 TRACE [org.jboss.security](默认任务-4)PBOX000262:模块选项[dsJndiName:java:/ user,principalsQuery:SELECT Hash FROM […]

泽西岛的身份validation

我想为我的基于Jersey0的服务器/客户端REST实现身份validation,但我不确定如何布置代码。 基本上对于每个操作我有2个方法 – 从服务器端1个,从客户端1个。 我缩小了算法范围 – 我将使用亚马逊策略和HMAC。 问题是如何在代码中列出这个 – 我应该将身份validation(加密/解密代码)添加到每个方法 – 服务器/客户端还是我应该在两端都有一个“dispatch”方法来执行加密/解密,然后将执行控制转移到一个更专业的版本,这将我有一个中心位置,在客户端或服务器进行身份validation? 我愿意听听你对此的评论吗?

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() ? 我认为这两个地方之间没有任何联系。 而且,我怎么能在一个客户端内进行两个或更多不同的登录?

如何在Keycloak身份validation之前调用javax.servlet.Filter

我们使用resteasy开发了一个REST API。 (部署在wildfly 10中) 基本上这些REST API是从另一个应用程序内部调用的,端点是用keycloak保护的。 但是一个端点暴露给外部方(该端点也使用keycloak保护)。 但由于外部方无法提供Keycloak Autherization代码,我们已经完成了一个实现,其中客户端使用应用程序生成的auth_key进行注册,客户端将使用该auth_key调用端点。 然后在webfilter(javax.servlet.Filter)中,使用tha auth_key我们获得相关的keycloak authntication Bearer令牌。 如果需要(例如:令牌已过期),我们也会调用Keycloak Server。 收到后,我们将Autherization令牌添加到Webfilter中的httpRequest并继续到终点应用程序。 但问题是, 在Web Filter之前调用KeyCloak身份validation 。 我正在寻找的是“如何在密钥泄露认证之前调用Webfilter?” 编辑: 现在我正试图找到这里提到的方法。 在Keycloak中进行身份validation之前将请求标头设置为请求 。 我可以在身份validation发生之前接听电话。 但是我无法在那里设置请求标头。 web.xml中 Restful Web Application resteasy.scan true keycloak.config.resolver package.to.HeaderBasedKeycloakConfigResolver REST endpoints /ep-name/resource-name resource-name KEYCLOAK realm-name role-name-for-resource-1 role-name-for-resource-2 org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap resteasy-servlet org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher resteasy.servlet.mapping.prefix /ep-name resteasy-servlet /ep-name/* WebFilter package.to.filter.WebFilter WebFilter /desired-ep-name/*

如何简单检查Azure AD的用户名和密码是否正确

我想检查提供的用户名(microsoft azure domain uername)和密码是否正确。 我不希望返回任何令牌,而只是检查Azure AD用户凭据是否正确。 目前,我已经浏览了许多关于azure的博客和文档,并且已经看到了许多oauth2资助流程。 但那些我无法使用,因为它需要完成某些配置 任何人都可以请帮助我 我在服务器端使用Java 如果我的问题需要更多细节,请告诉我

java中基于表单的身份validation的混乱

有谁能请告诉我,如何处理java中基于表单的身份validation中的j_security_check servlet? 我是否必须在web-xml文件中使用j_security_check名称映射servlet类,如: Anyname Anyclass Anyname /j_security_check 如果我输入用户名和密码,然后单击提交,那么具有j_security_check名称的servlet将如何处理这些信息? 该servlet将如何validation那些输入的用户名和密码,并获取资源,如果validation,然后授权成功,否则将出现错误页面。 j_security_check servlet将如何做到这一点?

Java servlet和身份validation

我有一个小应用程序,有3-4个servlet和一个基本模块,为我提供如下身份validation: public class Authentication { public boolean isUserAuthenticated(){ …. } } 是否有办法在每个其他servlet调用之前使用我的类检查身份validation,而不必在每个servlet调用中添加代码? 我想避免检查用户每个servlet以及我必须添加的每个servlet。 任何建议都被接受:) 谢谢,罗伯托

如何使用系统凭据自动登录该站点?

我需要为Intranet用户开发一个Web应用程序。 我不希望他们每次访问网站时都输入登录凭据。 它应该从系统用户名和密码自动加载。 即如果他们拥有有效的系统用户名和密码,他们应该能够登录该应用程序。 我正在使用Java。 如何满足这个要求?

如何在JASPIC中保存经过身份validation的用户?

我开发了一个安全validation模块(SAM)并实现了validateRequest方法。 我还有一个简单的webapp配置为使用此SAM。 在我的validateRequest方法中,我检查clientSubject并使用硬编码的用户名和具有硬编码组名的GroupPrincipalCallback设置CallerPrincipalCallback : final CallerPrincipalCallback callerPrincipalCallback = new CallerPrincipalCallback(clientSubject, “anonymous”); final GroupPrincipalCallback groupPrincipalCallback = new GroupPrincipalCallback(clientSubject, new String[] {“user”}); try { this.handler.handle(new Callback[] {callerPrincipalCallback, groupPrincipalCallback}); } catch (IOException | UnsupportedCallbackException e) { logger.error(e.getMessage()); } 我注意到每次刷新webapp中的servlet时,客户端主题都是空白的logger.debug(“Client: {}”, clientSubject); : 2015-05-05 11:21:02,200 DEBUG nmjsSaml2AuthModule [http-listener-1(2)] Client: Subject: 是否有可能以某种方式“保存”主题,以便主题附加到会话,我可以简单地每次都跳过登录同一个用户? 编辑我想通过手动将它存储在HttpSession找到了一种方法: req.getSession().setAttribute(“subject”, user); 不漂亮,但它的工作原理。

如何使用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 […]