Tag: jaas

在Android上使用JAAS(Java身份validation和授权服务)

是否可以在Android应用程序中使用JAAS? 在android API中, javax.security.auth包的大多数类都在说 传统安全代码; 不使用。 但在Android上有没有替代以用户为中心的JAAS? 或者如果我手动部署jaas.jar可能会jaas.jar吗?

Wildfly和JAAS登录模块

我正在玩Wildfly-9.0.1.Final和JAAS但我没那么有趣..我实现了我的自定义登录模块: public class MongoLoginModule implements LoginModule { @Inject protected MongoDB mongoDb; protected Subject subject; protected Principal identity; protected boolean loginOk; private CallbackHandler callbackHandler; private Map sharedState; private Map options; private Logger log = LoggerFactory.getLogger(MongoLoginModule.class); public boolean abort() throws LoginException { log.info(“abort!”); subject = null; return true; } public boolean commit() throws LoginException { // TODO […]

自定义注释JSF

我想制作一个自定义注释来检查我的JSF Web应用程序的某些函数的安全性。 为了安全起见,我将Tomcat安全性与JaaS一起使用,因此我没有应用程序管理的安全性。 实际上想要做的是在Spring Security(@Secured(“role”))等Backing Beans中为我的方法做一个注释。 我的安全系统是实现的,所以每个function都是一个角色,你可以动态地将“用户角色”存储在数据库中,当有人登录所有(function)角色时,“用户角色”将在tomcat安全中设置作为角色。 所以现在我有这段代码来检查我的用户是否可以访问该function: public static void checkSecurity(final String function) { final FacesContext facesContext = FacesContext.getCurrentInstance(); try { if (facesContext.getExternalContext().getRemoteUser() == null) { facesContext.getExternalContext().redirect(“login.xhtml”); return; } if (!facesContext.getExternalContext().isUserInRole(function)) { facesContext.getExternalContext().redirect(“restricted.xhtml”); return; } } catch (final Exception ex /* Mandatory “IOException e” will be caught + all other exceptions. */) { facesContext.getExternalContext().setResponseStatus(403); […]

新手在JAAS认证; 使用URL栏中的令牌登录

我有一个有趣的项目要求,我们必须接受一个令牌作为GET参数,它将validation进入应用程序的用户。 这是为了允许受信任的第三方无缝地将用户发送到我们的站点,而无需再次登录。 例如: http : //www.myproj.com/appName/index.jsf?user_token = asdf123randomstuffaf12fsaasdf appName将是上下文根,user_token将是可以检查的标记。 令牌将被使用一次,然后被丢弃,并且它们在生成后几秒钟到期。 令牌部分并不是我真正想要的,它是与JAAS的集成。 在Spring Security中,我可以设置一个filter来拦截请求,从URL中提取令牌,并针对UserDetailsS​​ervice对用户进行身份validation。 遗憾的是,Spring Security在这个项目中无法解决各种问题,因此我们需要使用JAAS身份validation。 我不是要求代码,但我可以对需要编写的模块使用一些基本方向,以便继续我的研究。 感谢大家,

为什么我在jdbcRealm数据库中列出web.xml中的安全角色?

我在Glassfish 3上运行JavaEE 6 Web应用程序。我使用JAAS和jdbcRealm以及默认主体到角色映射。 在我的数据库中,我有用于将用户名映射到其角色的表: username | role ———-+——- john | admin mary | user 为什么我需要在web.xml再次列出这些角色? admin user 没有它, isUserInRole()总是返回false 。

ActiveMQ授权

如果我想在Apache ActiveMQ上实现JAAS授权,我是否必须使用activemq.xml配置文件中的插件? 这种方式真的不好,因为如果我想更改授权,我必须更改activemq.xml文件并重新启动服务器才能工作。 有没有什么方法可以通过更改其他属性文件而不是activemq.xml文件来使用JAAS身份validation? 或者我可以自定义自己的授权插件吗? 谢谢。

使用Mockito,如何拦截void方法上的回调对象?

我正在使用mockito来测试遗留的JAAS / LDAP登录模块。 javax.security.auth.callback.CallbackHandler接口定义了该函数: void handle(javax.security.auth.callback.Callback[] callbacks) 我期待callbacks包含一个NameCallback ,这是需要操作以通过测试的对象。 有没有办法有效地模拟这个,或者我会更好地使用CallbackHandler的存根实现?

JSF身份validation和授权

为JSF Web应用程序实现身份validation和授权的最佳方法是什么? 我还是希望使用基于容器的安全性,因为我需要调用需要主体的EJB。 我意识到基于表单的身份validation是与JSF的一次重大斗争,但是我可以使用PhaseListener或类似的程序登录来validation用户吗? 我还应该看看其他任何方法吗?

在Grizzly上使用JaaS和泽西岛

我正在尝试找到一种简单,灵活的方法来向REST添加JaaS身份validation。 我找到了一篇post ,我认为这个post引导我走向正确的方向(参见StevenC的回答)。 听起来servlet容器负责安全性,而不是Jersey代码本身。 我喜欢这个想法,但需要一点实施指导。 Grizzly是我的servlet容器,我想将其配置为使用JaaS进行身份validation。 现在,一个简单的用户名/密码组合就可以了,直接在代码中硬编码用户名/密码对就可以了。 只要它使用JaaS,我们就可以在以后细化这些细节。 至于通过HTTP发送的内容,我认为存储cookie将是使这一切全部工作的最简单方法。 无论如何使身份validation垃圾远离我的Jersey代码。 以下是到目前为止启动Grizzly的代码: final String baseUri = “http://localhost:9998/”; final Map initParams = new HashMap(); initParams.put(“com.sun.jersey.config.property.packages”, “my.jersey.Service”); System.out.println(“Starting grizzly…”); SelectorThread threadSelector = GrizzlyWebContainerFactory.create(baseUri, initParams); System.out.println(String.format( “Jersey app started with WADL available at %sapplication.wadl\n” + “Try out %shelloworld\nHit enter to stop it…”, baseUri, baseUri)); System.in.read(); threadSelector.stopEndpoint(); System.exit(0); 如果整个过程有效,那么检查用户权限的最佳方法是什么? 我可能希望我的REST代码在某些点实际validation权限。 […]

JAAS – 无法将Kerberos票证持久化到缓存文件,无法从头开始创建缓存…以及其他详细信息

我正在开发一个使用JAAS执行身份validation的Java应用程序,应该按如下方式工作:(i)当用户uclient的票证已经在本地缓存中时,它应该在不询问凭证的情况下对用户进行身份validation,(ii)当没有“uclient”的票证时’在缓存中它应该询问用户名/密码并将获取的票证保存到本地缓存中。 我的应用程序能够执行’i’但无法执行’ii’,它正确地validation用户(创建主题/主体),但它不会将Krb票证持久存储到缓存中。 问题 我如何实现/实现这一目标? 并且..这是否会在空/不存在时创建Kerberos缓存文件? – 如何从Java中以编程方式实现缓存文件创建/初始化? 而且……仅仅是为了好奇,Java JaaS是否能够管理linux KEYRING? (目前Jaas无法自动管理它们) Java JaaS是否只能管理/持久化缓存中的默认主体的票证? – 或者我如何管理JaaS,我在单个缓存文件中有很多主体的票? 请注意,我的应用程序必须在Windows AD和Linux Realms中运行。 关于我的环境和我当前代码的更多数据 我正在使用FreeIPA客户端和服务器配置的Linux Kerberos Realm中测试客户端应用程序。 我有一个Linux VM,它为领域AUTHDEMO.IT提供KDC,以及一个支持AUTHDEMO.IT领域的Linux VM。 krb5.conf配置: includedir /var/lib/sss/pubconf/krb5.include.d/ [libdefaults] default_realm = AUTHDEMO.IT dns_lookup_realm = true dns_lookup_kdc = true rdns = false ticket_lifetime = 24h forwardable = true udp_preference_limit = 0 default_ccache_name = KEYRING:persistent:%{uid} [realms] AUTHDEMO.IT […]